method
attributes

attributes()
public
Returns a hash of all the attributes with their names as keys and the values of the attributes as values.
Register or
log in
to add new notes.
szeryf -
December 28, 2009
szeryf -
June 18, 2009
tadman -
June 25, 2009

4 thanks
Attribute names are Strings, not Symbols
Another possible gotcha – the returned hash keys are of type String, not Symbol:
user.attributes["login"] # => "joe" user.attributes[:login] # => nil

3 thanks
Expensive method!
This method builds the a new hash every time it’s called, so be cautious not to use it in loops etc.

1 thank
Returns a copy of the attribute contents
As szeryf notes, this is a really expensive method, but another important remark is that the contents returned are a copy of the actual values.
model.attributes['name'] # => 'Joe' model.attributes['name'] = 'Jim' model.attributes['name'] # => 'Joe' still model.name # => 'Joe'
This has the potential to be confusing as you’re given the impression you have direct access to the attributes.