【问题标题】:Rails model callback when has_and_belongs_to_many association has changed当 has_and_belongs_to_many 关联发生变化时,Rails 模型回调
【发布时间】:2015-07-24 20:18:18
【问题描述】:

我试图在我的Job 模型上触​​发after_save 回调,仅当它添加或更改了Surveyor 时(假设也存在)。

# app/models/job.rb 
has_and_belongs_to_many :surveyors
after_save :send_mail, if: ->(r) { r.surveyor_ids_changed? and r.surveyor_ids.present? }

# app/models/surveyor.rb
has_and_belongs_to_many :jobs

# permitted parameters on job
:job_name, :job_address, surveyor_ids: []

如何更改模型回调以正确触发 send_mail 方法?

【问题讨论】:

  • r.surveyor_ids.present? 为什么需要检查它?在after_save 中,因为它将创建一个持久化实例
  • 你能澄清一下你的意思吗?
  • 我的意思是您可以使用after_update 对您的测量员模型进行回调并检查它changed?

标签: ruby-on-rails ruby ruby-on-rails-4 model callback


【解决方案1】:

#changed?在保存模型后总是为假,但你可以使用#previous_changes来做这件事

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多