ruby-on-rails 按连接表字段排序

hi3rlvi2  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(108)

我有一个用户表和一个reporting_events表,其中reporting_events属于用户。
我要根据报告事件值对用户表进行排序。用户应该可以根据各种报告事件名称的值进行排序。
例如,可以有两个用户的报告事件,报告事件名称为“avg_response_time”,两个用户的报告事件值分别为1和2。我们应该能够按照用户的avg_response_time以降序和升序进行排序。
我尝试过的方法:

reports = users.joins(:reporting_events).where("reporting_events.name='avg_response_time'").order("reporting_events.value desc")

filter_params[:sort_order]给出了列和排序方向。当我不使用distict时,我在用户列表中得到了重复的用户。
我要列出所有用户,即使该用户的reporting_events不存在。

0lvr5msh

0lvr5msh1#

您需要用户使用outer join,而不是inner join(默认):

users.joins('LEFT OUTER JOIN reporting_events ON reporting_events.user_id = users.id').where(...

相关问题