导轨排序有很多关系(rails ordering by has many relation)

我试图通过每个评论的数量来订购我的音乐会。 音乐会has_many评论。 试过这样做

<% @concerts = Concert.all %> <% @concerts.order(reviews.size).each do |concert| %> - - - <% end %>

但是我得到了这个错误

ActiveRecord的未定义方法`review':: Relation :: ActiveRecord_Relation_Concert:0xb5540398>

有什么建议我如何参考每个评论的数量都要订购音乐会?

I'm trying to order my concerts by the number of reviews each has. Concert has_many reviews. Tried doing this

<% @concerts = Concert.all %> <% @concerts.order(reviews.size).each do |concert| %> - - - <% end %>

but I get this error

undefined method `review' for ActiveRecord::Relation::ActiveRecord_Relation_Concert:0xb5540398>

Any suggestions how I would reference the number of reviews each has to order the concerts?

最满意答案

不是最好的,但最简单的解决方案是

@concerts = Concert.all.includes(:reviews).sort_by{|concert| concert.reviews.size}.reverse

Not the best, but the simplest solution is

@concerts = Concert.all.includes(:reviews).sort_by{|concert| concert.reviews.size}.reverse导轨排序有很多关系(rails ordering by has many relation)

我试图通过每个评论的数量来订购我的音乐会。 音乐会has_many评论。 试过这样做

<% @concerts = Concert.all %> <% @concerts.order(reviews.size).each do |concert| %> - - - <% end %>

但是我得到了这个错误

ActiveRecord的未定义方法`review':: Relation :: ActiveRecord_Relation_Concert:0xb5540398>

有什么建议我如何参考每个评论的数量都要订购音乐会?

I'm trying to order my concerts by the number of reviews each has. Concert has_many reviews. Tried doing this

<% @concerts = Concert.all %> <% @concerts.order(reviews.size).each do |concert| %> - - - <% end %>

but I get this error

undefined method `review' for ActiveRecord::Relation::ActiveRecord_Relation_Concert:0xb5540398>

Any suggestions how I would reference the number of reviews each has to order the concerts?

最满意答案

不是最好的,但最简单的解决方案是

@concerts = Concert.all.includes(:reviews).sort_by{|concert| concert.reviews.size}.reverse

Not the best, but the simplest solution is

@concerts = Concert.all.includes(:reviews).sort_by{|concert| concert.reviews.size}.reverse