我想用关系计数对记录进行排序
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
模态
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