【发布时间】:2016-04-15 11:16:10
【问题描述】:
我有两个模型:
class Basket < ActiveRecord::Base
has_many :products
def recalculate_price!
price = products.map(&:price).sum
save
end
end
class Product < ActiveRecord::Base
belongs_to :basket
after_save :update_basket
def update_basket
basket.recalculate_price!
end
end
比我这样称呼它:
basket = Basket.new
basket.products.build(price)
basket.save
问题:basket.price 不要更新。
我调查了这个问题,发现update_basket 方法中有某种缓存。将reload 放在basket.recalculate_price! 之前可以解决此问题。
是否有任何选项可以保持update_basket 方法不变?我的申请中有很多这样的案例。
我想了解它的工作原理并避免将来出现类似问题。
注意:我最近将 rails 从 3.2 升级到了 4.2。在以前的版本中一切正常。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord ruby-on-rails-3.2