协会就像
class User < ActiveRecord::Base
has_many :products
has_many :ratings
我想根据用户评分对产品进行排序。 假设我想对所有评级大于4的产品进行排序。 我找不到任何办法。
我喜欢
User.joins(:ratings).where("ratings.rate > ?", 4).includes(:ratings)
从那以后,我得到所有评分大于4的用户,但是如何加入产品并对它们进行排序?
答案 0 :(得分:2)
User.joins(:ratings).where("ratings.rate > ?", 4).order('ratings DESC')
我不确定includes(:ratings)
最后做了什么。
应该使用这样的东西,它应该可以工作:
User.includes(:ratings).where("ratings.rate > ?", 4).order('ratings DESC')
答案 1 :(得分:1)
User.joins(:ratings).where("ratings.rate > ?", 4).order('ratings.rate')
如果您想查找相关产品,那么这应该有效:
Product.joins(user: :ratings).where("ratings.rate > ?", 4).order('ratings.rate')