在我正在工作的项目中,我有2个模型,用户。Rb和job.rb.
用户模型与作业相关,一个用户可以有多个作业请求,一个用户可以被多个作业雇用,但每个作业只能雇用一个用户。
User.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关系上的无效效果触发的。
我错过了什么?
我最终删除了dependent: :nullify
,因为我发现它不会触发任何父回调。
如果你试图更新before_destroy (user.rb)中的每个job,你将找不到任何job,因为关系已经消失了。
我的解决方案是删除dependent: :nullify
,所以我仍然有工作关系,以找到他们在一个before_destroy对用户。
手动更新每个job:status和:hired_contractor_id列。不是最好的解决方案,但最终是可行的。