我遇到了一个问题,我无法通过谷歌,论坛,小组等在网上找到很多问题,所以我会举起手来向那些比我更聪明的人寻求帮助:)
我有一个使用nested_attributes_for的rails项目设置,两个模型之间具有一对一的关系。它很容易就像预期的那样工作,直到我最近不得不修改项目成为一个has_many:通过关系。
代码看起来像这样:
has_many :f_ps
has_many :fs, :through => :f_ps
has_many :f_ps
has_many :ps, :through => :f_ps
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操作来处理它就像大约一年前一样?