我有三个模型:Users
,Songs
,Ratings
。 user
有songs
其他用户离开ratings
。我想创建一个有序列表,其中排名最高的用户位于顶部。
我可以通过将其添加到user
模型来显示收到的平均评分:
has_many :ratingsReceived, :through => :songs, :source => :ratings
然后在视图中:
<%= user.ratingsReceived.average(:overall) %>
我无法弄清楚如何制作一个有序列表。
感谢任何帮助。
以下是我的模型如何设置关联:
class Rating < ActiveRecord::Base
belongs_to :song
belongs_to :user
class User < ActiveRecord::Base
has_many :songs, dependent: :destroy
has_many :ratings
has_many :ratingsReceived, :through => :songs, :source => :ratings
class Track < ActiveRecord::Base
belongs_to :user
has_many :ratings, dependent: :destroy
答案 0 :(得分:3)
根据您的评论,如果user.ratingsReceived.average(:overall)
完美运作,这应该可以完成。
User.all.sort_by {|user| user.ratingsReceived.average(:overall)}.last
它会为您提供评分最高的用户。
如果你想要列表,你可以使用它,
User.all.sort_by {|user| user.ratingsReceived.average(:overall)}.reverse