我有个“问题”模型。
class Question < ActiveRecord::Base
has_many :answers
end...and一个答案模型..。
class Answer < ActiveRecord::Base
belongs_to :question
has_many :answer_points
end...and一个回答点模型..。
class AnswerPoint < ActiveRecord::Base
attr_accessible :points
belongs_to :answer
belongs_to :attribute
end...and用户回答模型..。
class UserAnswer < ActiveRecord::Base
belongs_to :answer
belongs_to :user
end...and属性模型.
class Attribute < ActiveRecord::Base
has_many :answer_points
end用户回答问题,每个答案都有与特定属性相关联的点值。(即)这个答案给出了两个沟通点,一个是分析性的)
我想显示由回答问题的用户生成的前5-10个属性的列表。我知道如何从原始SQL的角度来处理这个问题,但是我更喜欢一种更优雅的rails-y方法。有什么建议吗?
发布于 2013-11-28 01:19:50
嗯,我已经决定了:
questions = Question.where(:arbitrary_field => 'doge')
answers = Answer.where('question_id in (?)', questions.pluck(:id))
AnswerPoint.where('answer_id in (?)', answers.pluck(:id)).select('attribute_id, sum(points) as points').group('attribute_id').order('points desc')它为每个唯一的AnswerPoint返回一个attribute_id模型,points属性包含点之和。为我工作,但我愿意接受建议!
https://stackoverflow.com/questions/20255378
复制相似问题