2015-10-14 134 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')