Ruby on Rails - has_many:通过nested_attributes_for

时间:2010-01-08 16:31:40

标签: ruby-on-rails has-many-through nested-attributes

我遇到了一个问题,我无法通过谷歌,论坛,小组等在网上找到很多问题,所以我会举起手来向那些比我更聪明的人寻求帮助:)

我有一个使用nested_attributes_for的rails项目设置,两个模型之间具有一对一的关系。它很容易就像预期的那样工作,直到我最近不得不修改项目成为一个has_many:通过关系。

代码看起来像这样:

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'

只要代码仍然如上所述,一切正常(当然除了通过Web GUI的CRUD操作)。但是,只要我将嵌套属性部分添加到P模型中,就像这样:

accepts_nested_attributes_for :fs,  
  :allow_destroy => true,  
  :reject_if => proc { |a| a.all? { |k,v| v.blank? } }

它导致我的测试失败并且GUI工作(减去验证没有强制执行)。

关于正确使用此验证以及与nested_attributes_for一起工作的正确方法的任何想法,或者我只需要在P控制器中创建我自己的CRUD操作来处理它就像大约一年前一样?

0 个答案:

没有答案