Проверка на стороне сервера Rails Проблема - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть несколько форм с разными (количеством) полей для одной модели и таблицы базы данных.Как добавить валидации модели?

Я определил все валидации в модели, и когда я попытался отправить форму, Rails проверяет каждую валидацию поля модели.Подскажите, пожалуйста, как проверять разные формы с разными полями с одинаковой моделью в рельсах.

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018

У вас есть 2 формы с 10 полями и 20 полями соответственно.(Вы также можете иметь несколько форм.).

Добавить form_type attr_accessor & hidden_field в обеих формах со значениями form1 & form2.

Для формы-1 (10поля), установите для атрибута объекта form_type значение form1, и при проверке вы можете пропустить проверку, используя form_type например,

validates :name, presence: true, if: Proc { |obj| obj.form_type != 'form1' }

Таким образом, он будет проверять вышеуказанную проверку только для Form-2 (где form_type равенустановить в форму2)

0 голосов
/ 26 декабря 2018

Хорошая практика - определять валидации в моделях, но проблема заключалась в том, чтобы сделать их FAT.Большее количество полей для проверки увеличит количество линий в моделях.Таким образом, чтобы сделать все это в одном месте, не делая модели FAT и должен получить доступ к Active Record Validation.Таким образом, это может быть достигнуто с помощью камня active_interaction.

https://github.com/AaronLasseigne/active_interaction

https://taylor.fausak.me/2014/01/23/confidently-manage-business-logic-with-active-interaction/

0 голосов
/ 26 декабря 2018

Извлечение проверок из модели в специфичные для вида объекты FormObject.Таким образом, каждая форма будет использовать свой собственный объект формы только с необходимыми валидациями.

https://robots.thoughtbot.com/activemodel-form-objects

https://medium.com/selleo/essential-rubyonrails-patterns-form-objects-b199aada6ec9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...