Мне нужно сделать условную проверку моделей в Rails в зависимости от одного из полей в модели. Это продолжение более раннего вопроса , который побудил к разработке решения, которое кажется неправильным.
У меня есть несколько моделей ActiveRecord, основанных на «Модели заказа», сокращенная версия которой показана ниже.
class Order < ActiveRecord::Base
has_many: previous_addresses
has_one: applicant
has_one: current_address
end
Все остальные модели принадлежат к заказу.
Я хочу по-разному проверять различные модели, такие как заявитель, текущий_адрес и т. Д., В зависимости от атрибута компании заказа.
Я разработал решение для этого, которое включало полный набор проверенных вручную валидаций, поддерживающий все стандартные валидаторы activeRecord. Это решение было разработано с использованием нескольких таблиц, таких как модель, поля, field_items и т. Д., В которых описана проверка и содержится довольно много данных.
Теперь мне нужно манипулировать этими данными, копировать и редактировать их для каждой новой компании, к которой я подключаюсь. Это утомительно и подвержено ошибкам.
Читая «Путь Rails», я обнаружил раздел, в котором Оби Фернандес описал сохранение кода проверки в базе данных в форме операторов проверки ActiveRecord и внедрение их в модели во время выполнения на основе значения идентификатора компании.
Я представляю, как хранить данные в таких таблицах, как: -
company: 200
model: person
Code validates_length_of :middle_name, :maximum => 20, :allow_nil => true
company: 201
model: person
Code validates_length_of :middle_name, :maximum => 1, :allow_nil => true
Так что для компании 201 отчество «Джон» не пройдет проверку, но для компании 200 это будет нормально.
Кто-нибудь видел это, и если да, то есть ли у него какие-либо советы / предложения о том, как это сделать, еще лучше, если у кого-нибудь есть ссылки на учебники / код, который это делает?