When accessing active record column/attributes in rails, what is the difference between using self[:attribute] vs self.attribute? Does this affect getters and setters?
They're both just methods to get to the attribute - they're both just getters.
self.attribtue is a more "traditional" getter, whereas
self[:attribute] is basically just the
 method. Switching between using either has no ramifications.
I'd recommend using only the
self.attribute method because it's syntactically nicer. However, using the
self[:attribute] can come in handy when something else overrides the
For example, suppose you have a User model with a
name database column, so you'd get
user.name. But let's say you install a gem that adds a
#name method to each of your models. To avoid the complication, one option is to use
user[:name] to access it directly without going through the compromised method.