嵌套表单对象验证失败,抱怨缺少 parent_id

hel*_*ion 5 validation nested-attributes simple-form ruby-on-rails-4

我使用 simple_form。使用 rails accepts_nested_attributes_for 时,表单验证失败,抱怨嵌套属性验证失败,因为父对象的 id 不能为空 (validates_presence_of)。

我知道正在提交父对象 id,因为如果我删除表单提交的验证,并且子记录是有效的。因此,在父 ID 与子 ID 关联之前,验证正在查看参数……因此失败。这看起来很奇怪。为什么 rails 在嵌套属性的父级正确关联之前的表单提交阶段运行验证?

有没有处理这种情况的方法?

Chr*_*itz 5

刚刚在 Rails 文档中找到了答案。这是他们的示例,使用inverse_of

class Member < ActiveRecord::Base
  has_many :posts, inverse_of: :member
  accepts_nested_attributes_for :posts
end

class Post < ActiveRecord::Base
  belongs_to :member, inverse_of: :posts
  validates_presence_of :member
end
Run Code Online (Sandbox Code Playgroud)