我正在尝试根据用户在调查中使用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_at
。User...order('responses.created_at DESC')
update
,这将按照您的最后一个回答对所有responses
和users
进行排序,如您在下面评论。
在这种情况下,您必须:
用户通过响应将用户分组
计算每个用户的最后一个响应(max(user_responses.created_at))
通过最后一个响应对用户进行排序
类似的东西:
User
.includes(responses: [answer: :question])
.where(questions: {id: X})
.group('users.id')
.order('MAX(responses.created_at) DESC')