【问题标题】:belongs_to relation not firing after_update when nullify无效时,belongs_to 关系未触发 after_update
【发布时间】:2021-02-16 13:30:54
【问题描述】:

在我正在进行的项目中,我有 2 个模型,user.rb 和 job.rb。

用户模型与工作相关,一个用户可以有很多工作请求,一个用户可以在多个工作中被雇用,但每个工作只能雇用一个用户。

用户.rb:

  has_many :job, dependent: :nullify, :foreign_key => "hired_contractor_id"

Job.rb:

  belongs_to :hired_contractor, class_name: "User", optional: true

预期行为: 当一个用户被删除(该用户在工作中被雇用)时,我想更改工作状态。

为此,我正在尝试使用 after_update 或 after_save,但没有一个因对 belongs_to 关系的无效效应而被触发。

我错过了什么?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-5


    【解决方案1】:

    我最终删除了dependent: :nullify,因为我发现它不会触发任何父回调。

    如果您尝试更新 before_destroy (user.rb) 中的每个作业,您将找不到任何作业,因为关系消失了。

    我的解决方案是删除 dependent: :nullify,所以我仍然有工作关系,可以在 user.rb 的 before_destroy 中找到它们,并手动更新每个工作 :status 和 :hired_contractor_id 列。

    不是最好的解决方案,但最终会奏效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      相关资源
      最近更新 更多