【问题标题】:How should I write multiple condition in after_create callbacks我应该如何在 after_create 回调中编写多个条件
【发布时间】:2016-03-10 07:20:25
【问题描述】:

我在模型中有一个在创建后调用的方法

after_create :generate_insurer_recovery_invoice, if: :insurance_recovery_batch?

我应该如何在这个回调中写另一个条件?

【问题讨论】:

标签: ruby-on-rails model callback


【解决方案1】:

您也可以这样做以获得更短的可读版本

after_save :update_offices_people_count if: -> {office_id_changed? || trashed_changed?}

P.S:-> 是写作lambda 的简写版本。

【讨论】:

  • 不确定这是否是版本问题,但我需要在“if”之前加一个逗号
  • 我同意,正确的语法是after_save :update_offices_people_count, if: -> {office_id_changed? || trashed_changed?}
【解决方案2】:

我认为这可能对你有用

您可以从以下帖子中获得类似的结果

Multiple conditions on callbacks

after_save :update_offices_people_count

private

def update_offices_people_count
  if office_id_changed? || trashed_changed?  
    ...
  end
end

【讨论】:

  • 使用 lambda after_save close_claim_for_unrecoverable 有更好的解决方案,如果: lambda {|di| di.不可恢复? && di.unrecoverable_changed? }
  • after_save close_claim_for_unrecoverable,如果:lambda {|di| di.不可恢复? && di.unrecoverable_changed? }
猜你喜欢
  • 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
相关资源
最近更新 更多