Echoing Gareth's comments... your code will not work as written. It should be rewritten this way:
def name=(name)
write_attribute(:name, name.capitalize)
end
def name
read_attribute(:name).downcase # No test for nil?
end
As an extension to Aaron Longwell's answer, you can also use a "hash notation" to access attributes that have overridden accessors and mutators:
def name=(name)
self[:name] = name.capitalize
end
def name
self[:name].downcase
end
There is some great information available on this topic at http://errtheblog.com/posts/18-accessor-missing.
The long and short of it is that ActiveRecord does correctly handle super calls for ActiveRecord attribute accessors.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With