从onMave回调中为ActiveModel :: Dirty保留数组,就像在has_many到关系上的变化跟踪一样

时间:2014-07-08 12:16:00

标签: ruby-on-rails ruby ruby-on-rails-3 redis memcached

首先,为这个活泼的问题标题道歉!然而,它总结了我想要做的事情。

我已成功使用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之类的东西是我应该看的吗?

任何人都可以做类似的事情给我任何指示或指示我进一步阅读吗?

提前致谢。

0 个答案:

没有答案