【发布时间】:2015-01-19 08:57:21
【问题描述】:
是否可以预先加载(通过 include() 或类似方法)委托关联?
当我尝试我希望的显而易见的解决方案时(假设 ModelA 属于 ModelB,而 ModelB 又属于 Model C):
ModelA.includes(:modelB, :modelC)
我收到一个错误,因为 ModelA 不知道 Model C。
我向 ModelA 添加了一个委托:
delegate :modelC, to: :modelB, allow_nil: false
这允许类似:
ModelA.first.modelC
但不能解决 include() 问题。
这应该怎么做?
【问题讨论】:
-
你应该使用
has_many through而不是委托:Modela has_many ModelB,ModelA has_many ModelC,通过:ModelB -
错误的方式:A 属于 B,B 属于 C。理想情况下,我希望通过 belongs_to,但不存在的 AFAIK。
标签: ruby-on-rails rails-activerecord