Я сталкиваюсь с проблемой, для которой я не могу найти много онлайн через Google, форумы, группы и т. Д., И поэтому я собираюсь поднять руку и попросить помощи у тех, кто мудрее меня :)
У меня есть проект rails, который использовал nested_attributes_for с отношением один к одному между двумя моделями. Он работал довольно легко и, как и ожидалось, до тех пор, пока мне недавно не пришлось изменить проект, чтобы он стал отношением has_many: through.
Код выглядит примерно так:
P модель:
has_many :f_ps
has_many :fs, :through => :f_ps
F модель:
has_many :f_ps
has_many :ps, :through => :f_ps
Модель F_P:
belongs_to :p
belongs_to :f
validates_uniqueness_of :f_id, :scope => :p_id, :message => 'each F must be unique for this P'
Пока код остается таким, как указано выше, все работает нормально (кроме, конечно, действий CRUD через веб-интерфейс). Однако, как только я добавлю часть вложенных атрибутов в P-модель следующим образом:
accepts_nested_attributes_for :fs,
:allow_destroy => true,
:reject_if => proc { |a| a.all? { |k,v| v.blank? } }
Это приводит к сбою моих тестов, и графический интерфейс работает (за исключением проверок, которые не применяются).
Есть какие-нибудь идеи относительно правильного способа заставить эту валидацию работать счастливо вместе с nested_attributes_for или мне просто нужно создать свои собственные действия CRUD в P-контроллере, чтобы обрабатывать их примерно год назад?