我有一个以字符串形式返回关联名称的方法。这是其代码:
def get_assoc_name
Assoc.find(1).assoc_name
end
## Returns "foo"
另一个模型类(“Bar”)has_one“Foo”(:foo)。我试图使用“get_assoc_name”的结果来表明我想像这样访问关联:
def get_bar_foo
Bar.find(1)."#{get_assoc_name}"
end
## Should instantiate Bar.foo
以上是我多次失败的尝试之一。我知道您可以使用“constantize”从字符串启动一个新类,但是如何使用字符串来调用关联?
最佳答案
使用方法为:
def get_bar_foo
Bar.find(1).public_send get_assoc_name
end
当您的方法名称为Symbol或String时,您可以使用方法public_send
来调用它们如果该方法是公共(public)方法,或 send当方法是私有(private)方法时。
关于ruby-on-rails - 使用字符串作为类关联名称 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140109/