根据调查中对特定答案的最新响应对用户进行分类



我正在尝试根据用户在调查中使用Rails 5,Postgesql 9.4.5

在调查中对某个问题进行分类的问题。

到目前为止我有:

User.includes(responses: [answer: :question]).where(questions: {id: X}).order(...)

不确定该订单中的内容。响应都具有代表哪个答案的数值"得分"。我想在最后想象一些东西,例如:

.order("answers.score ASC")

,但我正在努力让两者依附。我只想通过用户对该特定问题的最新答案进行分类。(他们可以多次进行调查)我假设我需要在某些SELECT中设置字符串函数,但是我正在努力缠绕它。

任何帮助都将受到赞赏!

您可以像这样打印Rails查询的实际SQL:

User.includes(responses: [answer: :question]).where(questions: {id: X}).to_sql

然后,您可以通过右 table.field order(在to_sql返回的SQL中找到表名)和db/schema.rb

中的字段

应该是created_atUser...order('responses.created_at DESC')

update

,这将按照您的最后一个回答对所有responsesusers进行排序,如您在下面评论。

在这种情况下,您必须:

  1. 用户通过响应将用户分组

  2. 计算每个用户的最后一个响应(max(user_responses.created_at))

  3. 通过最后一个响应对用户进行排序

类似的东西:

User
  .includes(responses: [answer: :question])
  .where(questions: {id: X})
  .group('users.id')
  .order('MAX(responses.created_at) DESC')

最新更新