gpt4 book ai didi

ruby-on-rails - 子类上的急切加载关联

转载 作者:行者123 更新时间:2023-12-04 06:59:10 25 4
gpt4 key购买 nike

我有以下(简化的)类层次结构:

def Parent < ActiveRecord::Base end
def Child < Parent
belongs_to :other
end
def Other < ActiveRecord::Base end

我想获取所有 Parent 对象,并且 - 如果它们是 Child 对象 - 让它们急切加载 :other 关联。所以我曾希望我能做到:
Parent.find(:all, :include => [:other])

但正如我所担心的,我收到了一条消息:“未找到名为 'other' 的协会;也许您拼错了?”

在这种情况下建立急切加载的最佳方法是什么?

[编辑]
根据要求,这是更具体的示例:
  • 父 = 事件
  • Child = PostEvent
  • 其他 = 发布

  • 我想记录不同类型的事件,所有事件都有自己的属性(其中一些是对其他对象的引用),就像上面的例子一样。同时我希望能够列出发生的所有事件,因此是父类。

    最佳答案

    你能定义belongs_to :other吗?协会在Parent模型?它不会与每个 Parent 相关对象,但这就是 STI 的本质:您几乎总会有一些并非每个 child 都使用的列。

    如果实在无法将关联移动到父级,则可能需要分两步加载,例如:

    Parent.find(:all, :conditions => "type != 'Child'") +
    Child.find(:all, :include => [:other])

    关于ruby-on-rails - 子类上的急切加载关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149850/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com