我遇到了一个通过谷歌、论坛、群组等在网上找不到太多的问题,所以我要举手向比我更聪明的人寻求帮助:)
我有一个使用nested_attributes_for 的rails 项目设置,两个模型之间存在一对一的关系。在我最近不得不将项目修改为 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'
只要代码保持如上,一切正常(当然除了通过 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 操作来处理它,就像一年左右一样?