【发布时间】:2014-08-21 13:28:18
【问题描述】:
在覆盖一些赋值方法时,我发现如果我在 field_two 方法中使用隐式接收器,第一个被覆盖的方法 field_one 不会被调用。相反,似乎调用了默认的 'field_one='。
#controller
def do_something
@something=Something.first
@something.field_two="some_value"
end
class Something<ActiveRecord::Base
def field_one=(value)
puts "hi"
write_attribute(:field_g_five,value)
end
def field_two=(value)
field_one="whatever"
write_attribute(:field_g_one,value)
end
end
但是,如果我将接收器更改为显式,我的重写方法会被调用:
def field_two=(value)
self.field_one="whatever"
write_attribute(:field_g_one,value)
end
这是怎么回事?
【问题讨论】:
-
在调用范围内是否还有另一个名为 field_one 的变量?
-
我的编辑回答了你的问题吗?我不太清楚你的意思。
-
@TarynEast 没关系。他正在创造一个。
标签: ruby-on-rails ruby activerecord