我的Project
模型has_many
tasks
。 Project
模型accepts_nested_attributes_for
和validates_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
模型属性?
答案 0 :(得分:0)
您可能需要使用inverse_of。通过将$("#myForm").submit(function() { return false; });
设置为模型,Rails将在访问关联记录时在内存中使用相同的记录对象。不完全确定这是否有效,但你可以试试。