Active Record对象基于按计数分组

时间:2013-11-21 14:49:59

标签: sql ruby-on-rails ruby ruby-on-rails-3 postgresql

您好我是ROR开发人员并使用rails 3.2.13和Postgres数据库。

我有两种模式:

Question
  attr_accessible :category, :is_active, :question_text, :question_type_id, :survey_id,
                  :user_id
  has_many :abusive_questions

并且

AbusiveQuestion
  attr_accessible :question_id, :user_id, :ipaddress, :posted_by

  belongs_to :question

由此我想得到AbusiveQuestion,其数量大于特定值(例如:5)。

我从rails命令

执行了以下操作
AbusiveQuestion.count(:group=>"abusive_questions.question_id")

得到了

=> {1=>1, 5=>3, 3=>1} 

对于这个结果,键是question_id,值是计数但是,我想得到的问题是哪个值大于特定的动态值(例如:2)。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

我认为您希望在joinQuestion AbusiveQuestion然后使用selecthaving来获取您想要的内容。

类似的东西:

AbusiveQuestion.select('abusive_questions.*, count(question.id) as question_count').
  joins(:questions).
  group('abusive_questions.question_id').
  having('count(abusive_questions.question_id) > 5')

答案 1 :(得分:0)

您可以使用having方法。 http://guides.rubyonrails.org/active_record_querying.html#having

x = YOUR_DYNAMIC_COUNT
AbusiveQuestion.group(:question_id).having("count_all > ?", x).count