Rails:在嵌套模型验证中访问父模型属性

时间:2016-05-01 21:27:58

标签: ruby-on-rails validation nested-attributes

我的Project模型has_many tasksProject模型accepts_nested_attributes_forvalidates_associated tasks

在我的@project表单中,我在一次提交中为每个tasks提交多个project。我希望根据项目类型在嵌套的tasks上运行验证。如下:

Task型号:

  with_options if: :special_project? do |task|
    task.validate :is_possible
  end

  def special_project?
    project.cat == 'special'
  end

不幸的是,Rails给了我一个NilClass错误

undefined method cat for nil:NilClass

显然project_id模型(?)中尚未设置Task属性。

如何在验证期间访问嵌套Project模型中的父Task模型属性?

1 个答案:

答案 0 :(得分:0)

您可能需要使用inverse_of。通过将$("#myForm").submit(function() { return false; });设置为模型,Rails将在访问关联记录时在内存中使用相同的记录对象。不完全确定这是否有效,但你可以试试。