添加或更改子项时增加整数

时间:2013-05-16 22:46:06

标签: ruby-on-rails rails-activerecord

我在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

完美无缺。

2 个答案:

答案 0 :(得分:0)

after_save回调可能是您最干净的方法。您也可以执行方法覆盖。

def update_attributes
    self.version += 1
    super
end

但我相信after_save更好

答案 1 :(得分:0)

我认为观察者可以帮助你。请参阅that link!