2011-06-20 47 views
3

假設與非瞬態屬性一個和瞬時屬性b模型:如何獲取ActiveRecords跟蹤的模型中瞬態屬性的變化?

class Model < ActiveRecord::Base 
    attr_accessor :b 
end 

我想Rails的跟蹤屬性兩個屬性的變化。目前,model.changes只跟蹤屬性a的變化。

我迄今爲止嘗試:

使用::加載ActiveModel髒方法:

include ActiveRecord::AttributeMethods::Dirty 

class Model < ActiveRecord::Base 

    attr_accessor :b 

    define_attribute_methods [:b] 

    def b 
    @b 
    end 

    def b=(val) 
    b_will_change! unless val == @b 
    @b = val 
    end 
end 

遺憾的是Rails不喜歡它,並拋出一個TypeError。

有沒有任何想法如何完成這件事?

+0

此屬性未保留在數據庫中。那麼你想跟蹤變化的初始值是什麼? –

+0

當然,瞬態屬性的初始值爲零,但當瞬時屬性的當前值被覆蓋時總是發生變化。與持久屬性相同... – Scholle

回答

0

根據定義,非持久變量不是零就是髒。