ruby-on-rails - 使用字符串作为类关联名称 Rails

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

我有一个以字符串形式返回关联名称的方法。这是其代码:

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

当您的方法名称为SymbolString时,您可以使用方法public_send来调用它们如果该方法是公共(public)方法,或 send当方法是私有(private)方法时。

关于ruby-on-rails - 使用字符串作为类关联名称 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140109/

相关文章:

json - 输出JSON时防止Rails对URL中的&符号进行编码

ruby-on-rails - 链接到旧的 Rails 文档

ruby-on-rails - DataTables 全局搜索缺少 FROM 子句

ruby-on-rails - 更改 Rails 中的文件夹名称 - Git 不允许我添加到提交

Rails 中的 jQuery Action

ruby-on-rails - heroku push 上的 Ruby 版本更改

ruby-on-rails - Rails 单元测试可以在与测试不同的环境中运行吗?

python - Heroku 未被识别为内部或外部命令 (Windows)

python - 相当于 Python 在 Ruby 中的 "with"

ruby-on-rails - "Cannot modify association because the source reflection class is associated via :has_many"