如何强制 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
我有两个 类,一个 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