【问题标题】:How to eager-load has_one associations on STI subclass如何在 STI 子类上预先加载 has_one 关联
【发布时间】:2018-11-02 23:28:11
【问题描述】:

我有一个这样的模型层次结构:

class Activity
end

class HelloActivity < Activity
  has_one :hello_activity_details
end

class WorldActivity < Activity
  has_one :world_activity_details
end

我想查询所有活动并急切加载详细信息以避免 N+1 问题。但是,这样做:

Activity.all.include([:hello_activity_details, :world_activity_details])

产量

Association named 'hello_activity_details' not found on WorldActivity; perhaps you misspelled it?

如何加载详细信息?

我知道我可以手动调用预加载器,但有没有更惯用的方法。

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby activerecord ruby-on-rails-5


    【解决方案1】:

    看起来像一个典型的拼写错误,如错误所述。

    has_one 的类关联名称必须为 singular

    试试:

    class HelloActivity < Activity
      has_one :hello_activity_detail
    end
    
    class WorldActivity < Activity
      has_one :world_activity_detail
    end
    

    【讨论】:

      猜你喜欢
      • 2023-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多