首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord和复杂查询

ActiveRecord和复杂查询
EN

Stack Overflow用户
提问于 2013-11-27 23:54:11
回答 1查看 843关注 0票数 1

我有个“问题”模型。

代码语言:javascript
复制
class Question < ActiveRecord::Base
  has_many :answers
end

...and一个答案模型..。

代码语言:javascript
复制
class Answer < ActiveRecord::Base
  belongs_to :question
  has_many :answer_points
end

...and一个回答点模型..。

代码语言:javascript
复制
class AnswerPoint < ActiveRecord::Base
  attr_accessible :points
  belongs_to :answer
  belongs_to :attribute
end

...and用户回答模型..。

代码语言:javascript
复制
class UserAnswer < ActiveRecord::Base
  belongs_to :answer
  belongs_to :user
end

...and属性模型.

代码语言:javascript
复制
class Attribute < ActiveRecord::Base
  has_many :answer_points
end

用户回答问题,每个答案都有与特定属性相关联的点值。(即)这个答案给出了两个沟通点,一个是分析性的)

我想显示由回答问题的用户生成的前5-10个属性的列表。我知道如何从原始SQL的角度来处理这个问题,但是我更喜欢一种更优雅的rails-y方法。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-28 01:19:50

嗯,我已经决定了:

代码语言:javascript
复制
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属性包含点之和。为我工作,但我愿意接受建议!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20255378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档