我有一个question
模型,其中包含votes
和comments
。
我在名为question
的{{1}}模型上定义了一个方法,该方法只是engagement_score
。
votes + comments
如何按class Question < ActiveRecord::base
has_many votes
has_many comments
def engagement_score
self.votes.count + self.comments.count
end
end
排序所有questions
?
engagement_score
不起作用,因为Question.all.order("engagement_score ASC")
不是engagement_score
中的列。
答案 0 :(得分:2)
如果您不介意不返回数组,那么您可能只需使用sort_by。
类似
Question.all.sort_by { |question| question.engagement_score }
答案 1 :(得分:0)
您可以执行类似
的操作Question.includes(:comments, :votes).order_by_engagement_score
def self.order_by_engagement_score
sort_by |ques|
-(ques.votes.length + ques.comments.length)
end
end