访问红宝石
问题描述:
属性的前值可以说我有一个模型(一个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值)。你能提出一个办法吗?
答
我想不出有任何理由这样做,但如果你真的需要,你可以覆盖setter方法,你去商店的各种变化。
def x1=(value)
@previous_x1_value = x1
super
end
def previous_x1_value
@previous_x1_value || x1_was
end
答
这一切都建立在对轨道。见[[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']
1的文档)它不能与attr_accessor工作,只能用实际列2)存储一个对象,你每一次重做查询,重置对象 – apneadiving 2013-04-04 12:25:22