如何强制 Rails 模型在回调中获取新版本

how to force a Rails model to get a new version in a callback

我有两个 类,一个 Item 和一个 Price。我有 Item 对象的缓存哈希表示,我想在更新时或更新关联对象时清除/创建该对象。

在我的 Item 课上,我有:

在item.rb中:

  before_update do
    self.create_new_frags
  end

但是,Rails 认为它具有最新版本,因此价格值不会更新。我试过 self.reload 但它仍然无法正常工作。我如何告诉这个实例它需要重新加载它的关联?这有点棘手,因为我不能让它重新加载所有内容,因为这是在 before_update 中,这样我会丢失即将更新的内容。

在item.rb中:

  def as_mig_hash type # part of create_new_frags
    self.reload  # didn't do anything
    r={}
    r[:id]=id
    r[:header]=header
    r[:detail]=detail
  end

调用 reload 只影响属性。如果你想重新加载一个关联,你需要直接在关联上调用reload

<association>.reload