如何急切加载嵌套的多态关联

时间:2013-10-10 08:04:18

标签: ruby-on-rails activerecord ruby-on-rails-4 eager-loading

我正在尝试加载嵌套的多态关联。我似乎无法找到解决方案。

这是我的模型设置:

class Post
  has_many :comments
end

class Comment
  belongs_to :ownable, polymorphic: true
end

class User
  has_many :comments, as: :ownable
end

这就是我要做的事情:

Post.includes(comments: :ownable).to_a

但它正在抛出这个错误:

ActiveRecord::EagerLoadPolymorphicError - Can not eagerly load the polymorphic association :ownable

如何切实加载这种嵌套的多态关联?

1 个答案:

答案 0 :(得分:2)

首先,您的帖子has_many评论也应该设置:as =>可拥有

    class Post
      has_many :comments, as: :ownable
    end

即使更改了这个,你仍然会得到相同的错误,因为rails无法找到一个可用的表。

这里有一个解决方法Eager load polymorphic