I'm able to run both and it returns the same vale:

user = User.new(name:'John')
user.attributes['first_name']
=> 'John'
user.read_attribute('first_name')
=> 'John'

Is one more performant than the other? Are there cases where I would use one over the other?

Thanks!

有帮助吗?

解决方案

attributes returns a hash of all attributes for the user and ['first_name'] just accesses the specified parameter of the hash, whereas read_attribute just returns the single parameter asked for. You don't really need either of those methods to access the name as this can be done which makes the code a lot cleaner:

user = User.new(name:'John')
user.name
=> 'John'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top