如何dynamiclly获取activerecord对象的属性值?动态获取对象的属性
例如我有一个名为attr_name
的变量。
我想要做这样的事情:
person = Person.find(1)
attr_name = "address"
address = person.<function_name>(attr_name)
这function_name
可以用吗?
如何dynamiclly获取activerecord对象的属性值?动态获取对象的属性
例如我有一个名为attr_name
的变量。
我想要做这样的事情:
person = Person.find(1)
attr_name = "address"
address = person.<function_name>(attr_name)
这function_name
可以用吗?
send是您正在查找的方法。
可以使用person.attributes[attr_name]
或person.read_attribute(att_name)
,或者甚至更短,那么这是person[attr_name]
。
这是最安全和正确的方法。请注意,这只适用于属性,不适用于其他方法或关联。 – 2012-02-28 14:43:51
无法使用'object [symbol或string]'语法获取属性或方法。创建一个简单的类,并首先使用点语法公开访问一些变量或方法,然后尝试通过符号或字符串来访问它。不劳逸。 – 2017-09-26 17:52:11
''' 类Foo DEF初始化 @foo = '富名' @bar = '栏名' 端 DEF foo的 @foo 端 端 富= Foo.new FOO [:foo] ''' – 2017-09-26 17:52:34
如果这样使用send
address = person.send("function_name" + "attr_name")
取决于其中函数名称从何而来,这可能是相当危险的,所以我不会做 – 2012-02-28 14:42:57