ruby-on-rails - 动态获取rails关联

标签 ruby-on-rails associations active-relation

如果我有一个作为字符串的关联名称,有没有办法可以获取关联对象的句柄?

例如:

o = Order.first

o.customer 会给我这个订单所属的客户对象。

如果我有:
o = Order.first
relationship = 'customer'

我想做类似的事情:
customer = eval("o.#{relationship}")

我知道 eval 是一个糟糕的选择,我应该避免它。执行此操作的最佳方法是什么(因为 eval 在此示例中不起作用)。

我确实有这个工作:
customer = o.association(relationship)

后来我发现该关联不是公共(public) API 的一部分,不应该使用。因为当我使用一行代码时,我在页面的上方(引用了该关系)停止了工作。

任何想法都会很棒!

最佳答案

只是这样做呢?

customer = o.send(relationship)

关于ruby-on-rails - 动态获取rails关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432689/

相关文章:

ruby-on-rails - 如何将应向用户显示哪些答案的逻辑移动到新类(class)?

ruby-on-rails - Rails 3.1 Savon soap 请求给出 Timeout::Error: Timeout::Error ut using curl 我得到响应

javascript - 在 rails create controller 中渲染 new.js.erb (Rails 6)

activerecord - 表少模型协会

ruby-on-rails - 带有自定义外键 sql 表达式的 ActiveRecord has_many

ruby-on-rails - 通过 ActiveRecord::QueryMethods 进行查询并返回 ActiveRecord_Relation rails

ruby-on-rails - 排除事件关系中的条件,如何?

ruby-on-rails - rails 3.0.3 - ActiveRecord::Relation,未定义的方法错误

ruby-on-rails - 为什么 Ruby on Rails 被称为领域特定语言?

ruby-on-rails - Rails2到rails3的路由问题