【问题标题】:Rails: Access parent model attributes in nested model validationsRails:在嵌套模型验证中访问父模型属性
【发布时间】:2016-05-01 21:27:58
【问题描述】:

我有 Project 模型 has_many tasksProject 模型 accepts_nested_attributes_forvalidates_associated tasks

在我的@project 表单中,我在一次提交中为每个project 提交多个tasks。我希望根据项目类型在我的嵌套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 模型中设置(?)。

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

【问题讨论】:

  • 是,尚未设置

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


【解决方案1】:

您可能需要为此使用inverse_of。通过为模型设置inverse_of,Rails 将在访问相关记录时使用内存中的相同记录对象。不完全确定这是否可行,但您可以尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多