动态获取Object的属性

Eya*_*l R 13 ruby ruby-on-rails

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

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

person = Person.find(1)
attr_name = "address"
address = person.<function_name>(attr_name)
Run Code Online (Sandbox Code Playgroud)

哪个function_name可以使用?

Sam*_*ang 28

无论是使用person.attributes[attr_name]person.read_attribute(att_name),甚至更短,那么这是person[attr_name].

  • 这是最安全和最正确的方法.请注意,这仅适用于属性,而不适用于其他方法或关联. (3认同)

Sye*_*lam 5

send是您正在寻找的方法。

  • 取决于函数名称的来源,这可能非常危险,所以我不会这样做 (6认同)