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

时间:2015-01-05 21:12:29

标签: ruby-on-rails activerecord ruby-on-rails-3.2

我有两个课程,ItemPrice。我有一个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

1 个答案:

答案 0 :(得分:1)

调用reload仅影响属性。如果要重新加载关联,则需要直接在关联上调用reload

<association>.reload