我有一个方法,将一个关联的名称作为字符串返回。这是代码:
def get_assoc_name
Assoc.find(1).assoc_name
end
## Returns "foo"
另一个模特班(" Bar")has_one" Foo" (:富)。我正在尝试使用" get_assoc_name"的结果。表示我想像这样访问该关联:
def get_bar_foo
Bar.find(1)."#{get_assoc_name}"
end
## Should instantiate Bar.foo
以上是我失败的尝试之一。我知道你可以使用" constantize"从字符串中启动新类,但如何使用字符串来调用关联?
答案 0 :(得分:3)
使用方法:
def get_bar_foo
Bar.find(1).public_send get_assoc_name
end
如果方法名称为 Symbol 或 String ,则可以使用方法public_send
调用它们,如果方法是公共方法,或方法为私有方法时的send。