我试图在这样的方法中更新两个属性:
def my_method
@from = @to = Time.zone.now
end
但是当我调用这个方法时,我没有在from和to中获取设置值:
my_model.from => nil
my_model.to => nil
用它起作用:
self.from = self.to = Time.zone.now
my_model.from => Sat, 20 Jul 2013 20:54:40 UTC 00:00
from
和to
是持久属性
答案 0 :(得分:1)
持久属性不是简单属性/实例变量。
它们由ActiveRecord管理,您必须在设置时使用self.xxx
。
当读取时,例如obj.from
,它正在调用由活动记录添加的访问者。
答案 1 :(得分:-1)
class Foo
attr_reader :from, :to
def my_method
@from = @to = Time.now
end
end
foo = Foo.new()
foo.my_method
puts foo.from # => 2013-07-20 17:06:51 -0400
puts foo.to # => 2013-07-20 17:06:51 -0400