While overriding some assignment methods, I discovered that if I use the implicit receiver in the field_two method, the first overridden method, field_one, doesn't get called. Instead, the default 'field_one=' seems to be called.
#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
However, if I change the receiver to be explicit, my overridden method gets called:
def field_two=(value)
self.field_one="whatever"
write_attribute(:field_g_one,value)
end
What is going on here?