在续集中热切地加载了很多很多协会

时间:2013-03-20 00:24:03

标签: ruby sequel

我正在编写一个应用程序,我有两个模型,一个Post和一个Tag模型。他们有多对多的关联。我想在检索帖子时为帖子加载所有标签,因此我不必多次访问数据库。

模型看起来大致如此(我省略了一些私人细节):

class Post < Sequel::Model
  many_to_many :tags
end

class Tag < Sequel::Model
  many_to_many :posts
end

我已经尝试过Post.eager_graph(:tags)[id],但它只加载了第一个标记,并将所有标记列名称加上tags_,而不是将其放入数组或其他内容。有没有办法让它一次加载所有标签,或者我将不得不让它们分开查询?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

除非您急切地加载多个帖子,否则在检索帖子时自动加载标签是没有意义的。除非你加入,否则它会接受多个查询,而且我猜想当考虑Sequel分割JOINed结果所需的额外开销时,JOIN会比两个单独的查询慢。