我在rails中使用ActiveRecord,我有一个名为Menu的模型,许多其他模型属于Menu:Ingredient,Product,ProductSize,Category,...
对于那些型号,其他型号属于:ProductPrice属于Product,...
我在Menu中有一个名为version:integer的属性。每次插入/删除/编辑该菜单所属的模型时,最干净的方法是什么才能增加这个整数?我可以用子模型中的after_save回调来解决这个问题,但我不确定这是最好的方法。
编辑:使用Parandroid提示我想出了这个:
class MenuObserver < ActiveRecord::Observer
observe :ingredient, :product, :menu_category, :ingredient_category, :product_type, :product_size, :product_price
def after_save(model)
model.menu.version = model.menu.version + 1;
model.menu.save!
end
end
完美无缺。
答案 0 :(得分:0)
after_save
回调可能是您最干净的方法。您也可以执行方法覆盖。
def update_attributes
self.version += 1
super
end
但我相信after_save
更好
答案 1 :(得分:0)
我认为观察者可以帮助你。请参阅that link!。