动态获取Object的属性

时间:2012-02-28 11:54:23

标签: ruby-on-rails ruby

如何动态获取activerecord对象的属性值?

例如,我有一个名为attr_name的变量 我想做这样的事情:

person = Person.find(1)
attr_name = "address"
address = person.<function_name>(attr_name)

可以使用function_name吗?

3 个答案:

答案 0 :(得分:27)

使用person.attributes[attr_name]person.read_attribute(att_name),或者更短,然后使用person[attr_name]

答案 1 :(得分:3)

send是您正在寻找的方法。

答案 2 :(得分:1)

如果使用send

执行此操作
address = person.send("function_name" + "attr_name")