为什么我不能使用连接从activerecord关系查询?

时间:2017-03-08 03:22:47

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

我试图弄清楚为什么这会产生N + 1查询。具体来说,我想得到upvotes的数量,并认为通过使用连接它会。我的目标是通过upvotes计数来排序结果,但是当我还想报告每个条目的upvotes计数时,为什么它再次查询数据库的upvotes?谢谢:))

self .joins(:upvotes) .group("#{self.table_name}.id") .order("count(upvotes.id) DESC") .includes(:creator, :categories)

1 个答案:

答案 0 :(得分:0)

如果这是一个常见的计数,Rails有一个称为计数器缓存的东西,它会将计数存储在父模型中,以便于查询。

我不知道你的班级姓名,所以我打电话给X。

Upvotebelongs_to :x, counter_cache: true

然后,您只需要upvotes_count

中的X个字段

存储在X上,您只需查询X,按_upvotes_count_排序并使用该字段显示它。