我想用关系计数对记录进行排序

i wand to sort recorder with relationship count

模态

class product < ActiveRecord::Base

  has_many :user_like_products , dependent: :destroy
  has_many :product_liked_by_users , :through => :user_like_products, :source =>:user, :foreign_key => "user_id", :class_name => "User"
end

class User < ActiveRecord::Base

  has_many :user_products , dependent: :destroy
  has_many :user_collaborated_products, :through => :user_products, :source =>:product, :foreign_key => "product_id", :class_name => "Product"
end

现在我有了这个查询帮助用户喜欢的产品数量。

product.product_liked_by_users.count

现在我想要这样的东西。

@products = Product.all.order_by(product.product_liked_by_users.count in DESC)

如果有什么方法可以帮助我。

谢谢。

试试这个:-

@products = Product.joins(:product_liked_by_users).group("product_liked_by_users.id").order("count(product_liked_by_users.id) DESC")

这非常适合我

@product.to_a.sort_by!{|p| p.user.products.size}.reverse