Ruby on Rails - 创建子项时更新父项字段

Rac*_*494 0 activerecord ruby-on-rails ruby-on-rails-4

我有两个模型,Submission(父母)和SubmissionDetail(孩子)。Submission有一个名为 的字段status,该字段可以是“未完成”、“待定”、“已批准”或“已拒绝”。当您创建新的 时Submissionstatus会自动设置为不完整。孩子的外键为:submission_id.

我希望发生的是,当SubmissionDetail创建新的时,其父级的状态将自动更改为“待处理”。不知道该怎么做。例如,我touch在模型中读过一些内容,但我认为这不适用于此处。

Car*_*III 5

您可以利用ActiveRecord 的回调在创建新子项时更新父项。

class Submission < ActiveRecord::Base
  has_many :submission_details
end

class SubmissionDetail < ActiveRecord::Base
  belongs_to :submission

  after_create :set_parent_to_pending

  def set_parent_to_pending
    # child should always have a parent, but we need to check just in case
    submission.update(status: 'pending') unless submission.nil?
  end
end
Run Code Online (Sandbox Code Playgroud)

回调after_create将在子记录创建后运行。