嵌套表单对象未通过验证抱怨缺少parent_id

时间:2014-10-26 01:35:31

标签: validation ruby-on-rails-4 simple-form nested-attributes

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

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

是否有处理此方案的rails方式?

1 个答案:

答案 0 :(得分:2)

刚刚找到了这个in the Rails docs的答案。以下是他们的示例,使用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