使用字符串作为类关联名称Rails

时间:2015-01-25 18:49:38

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个方法,将一个关联的名称作为字符串返回。这是代码:

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"从字符串中启动新类,但如何使用字符串来调用关联?

1 个答案:

答案 0 :(得分:3)

使用方法:

def get_bar_foo
  Bar.find(1).public_send get_assoc_name
end

如果方法名称为 Symbol String ,则可以使用方法public_send调用它们,如果方法是公共方法,或方法为私有方法时的send