首先,为这个活泼的问题标题道歉!然而,它总结了我想要做的事情。
我已成功使用ActiveModel::Dirty在我的应用中为各种模型属性创建一种审计跟踪(如下面的产品)。
我现在有一个相当紧迫的请求,可以跟踪关联的has_many关系中的更改(在这种情况下的添加和删除)。
有问题的模型是:
class Product < ActiveRecord::Base
has_many :products_territories, :dependent => :destroy
has_many :territories, :through => :products_territories
end
class Territory < ActiveRecord::Base
has_many :products_territories
has_many :products, :through => :products_territories
end
class ProductsTerritory < ActiveRecord::Base
belongs_to :territory
belongs_to :product
end
我使用ActiveModel :: Dirty失败了,它似乎不可能,所以我正在尝试我自己的东西,表面上很简单;在before_save之后获取产品的products_territories数组,然后再次获取after_save,然后对两个数组进行比较以识别添加和删除。我无法理解的是从保存之前保留products_territories数组的最佳方法,以便随后可用于我的after_save回调。我非常肯定@@ class变量不是要走的路,而且我对会话变量也不太确定。我想知道Redis或Memchached之类的东西是我应该看的吗?
任何人都可以做类似的事情给我任何指示或指示我进一步阅读吗?
提前致谢。