Ruby on Rails - has_many: с помощью nested_attributes_for - PullRequest
1 голос
/ 08 января 2010

Я сталкиваюсь с проблемой, для которой я не могу найти много онлайн через 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-контроллере, чтобы обрабатывать их примерно год назад?

...