Ruby on Rails-按相关表记录的计数进行排序

时间:2019-01-30 15:56:43

标签: mysql ruby-on-rails-4

我正在尝试查询,但似乎无法破解其语法。因此,我需要获取当月(最近一次)的调查,将其限制为5,然后根据相关表的计数进行排序,该表是调查的答复。因此,如果一项调查有8条回答,另外4条,则8条回答将显示在顶部。

我有一个范围来查找本月的调查,但是我需要放弃它以进行更复杂的查询,或者找到一种以最大survey.response_count进行订购的方法。

这是我得到的最接近的数字,但仍然不正确。

@sorted_active_surveys = Survey.joins(:survey_responses).group(:survey_id).order('COUNT(survey_responses.survey_id) DESC')

如果我尝试与合并范围结合使用,则created_at日期会变得模棱两可,并且会出错。

Survey.rb

scope :for_month, ->(date) { where("MONTH(created_at) = ?", date.month).limit(5) }

这也会产生相同的错误

    scope :for_month, ->(date) { where("MONTH(survey.created_at) = ?", date.month).limit(5) }

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这不会保留范围,但似乎可以正确地按响应计数排序并将日期保留在当前月份之内。

@SpringBootTest
@EmbeddedCassandra(scripts = "...", replace = EmbeddedCassandra.Replace.NONE /*use auto-configured cluster */)
@ExtendWith(SpringExtension.class)
public class EmbeddedCassandraTests {

    @Test
    public void testMe() {

    }

}