如何在STI子类上加载has_one关联

时间:2018-05-23 21:04:00

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

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

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?

如何加载详细信息?

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

由于

1 个答案:

答案 0 :(得分:0)

看起来像典型的拼写错误,因为错误说明了。

has_one必须将类关联名称设为单数

尝试:

class HelloActivity < Activity
  has_one :hello_activity_detail
end

class WorldActivity < Activity
  has_one :world_activity_detail
end