这可能是一件非常简单的事情,但无法找到解决方案。
我有一个ActiveRecord对象,想要获得这样的属性:
attribute_name = "name"
user = User.find(1)
user.get_attribute_by_name(attribute_name) => "John"
谢谢!
答案 0 :(得分:66)
所有这些都应该有效:
user[attribute_name]
user.read_attribute(attribute_name)
user.send(attribute_name)
我个人不会在这种情况下使用send
。如果可用,请选择public_send
发送
答案 1 :(得分:2)
您可以使用[]
或read_attribute()
,但they are not equivalent。
更安全的访问方法是使用[] method方法,因为如果该属性不存在,它将引发ActiveModel::MissingAttributeError
错误。如果该属性不存在,read_attribute method将返回nil
。
答案 2 :(得分:-1)
在Rails 5中,只有attribute_name = "name"
正常工作