2013-04-04 162 views
0

屬性的前值可以說我有一個模型(一個ActiveRecord類):訪問紅寶石

class Sample < ActiveRecord::Base 
    attr_accessor :x1 
end 

我知道

Sample.last.x1 == 1 #true 

如果我設置Sample.last.x1 = 3然後Sample.last.x1_was == 1 #true

但是,當我再次設置X1的值:Sample.last.x1 = 8然後Sample.last.x1_was == 3 #false,但Sample.last.x1 == 1 #true

我能猜到爲什麼會發生(Sample.last未保存,因爲變化),但我想找到一種方法檢索x1的前一個值(不是db值)。你能提出一個辦法嗎?

+0

1的文檔)它不能與attr_accessor工作,只能用實際列2)存儲一個對象,你每一次重做查詢,重置對象 – apneadiving 2013-04-04 12:25:22

回答

1

我想不出有任何理由這樣做,但如果你真的需要,你可以覆蓋setter方法,你去商店的各種變化。

def x1=(value) 
    @previous_x1_value = x1 
    super 
end 

def previous_x1_value 
    @previous_x1_value || x1_was 
end 
0

這一切都建立在對軌道。見[[email protected]][1]

person.name = 'Bob' 
    person.changed?  # => true 
    person.name_changed? # => true 
    person.name_was  # => 'uncle bob' 
    person.name_change # => ['uncle bob', 'Bob'] 
    person.name = 'Bill' 
    person.name_change # => ['uncle bob', 'Bill']