在rails上的ruby中对数据进行排序

时间:2015-10-14 12:09:18

标签: ruby-on-rails ruby ruby-on-rails-3 sorting

协会就像

class User < ActiveRecord::Base

has_many :products
has_many :ratings

我想根据用户评分对产品进行排序。 假设我想对所有评级大于4的产品进行排序。 我找不到任何办法。

我喜欢

User.joins(:ratings).where("ratings.rate > ?", 4).includes(:ratings)

从那以后,我得到所有评分大于4的用户,但是如何加入产品并对它们进行排序?

2 个答案:

答案 0 :(得分:2)

User.joins(:ratings).where("ratings.rate > ?", 4).order('ratings DESC')

我不确定includes(:ratings)最后做了什么。 应该使用这样的东西,它应该可以工作:

User.includes(:ratings).where("ratings.rate > ?", 4).order('ratings DESC')

参考:issue in order clause and limit in active record

答案 1 :(得分:1)

User.joins(:ratings).where("ratings.rate > ?", 4).order('ratings.rate')

如果您想查找相关产品,那么这应该有效:

Product.joins(user: :ratings).where("ratings.rate > ?", 4).order('ratings.rate')