2015-10-14 98 views
0

协会就像排序数据

class User < ActiveRecord::Base 

has_many :products 
has_many :ratings 

我想根据用户等级的产品进行排序。 假设我想对所有那些评级大于4的产品进行排序。 我找不到任何方法来做到这一点。

我做这样的事情

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

,从我得到它的收视率大于4,但随着产品如何加入和排序他们所有的用户?

+0

嘿乌斯曼,你应该接受一个作为一个解决方案,让其他人知道,你发现你的解决方案。 – Abhinay

回答

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
User.joins(:ratings).where("ratings.rate > ?", 4).order('ratings.rate') 

如果你想找到相关的产品,那么这应该工作:

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