按给定数组的顺序按列名查找模型记录

时间:2019-02-26 00:50:46

标签: ruby-on-rails

我正在使用mysql。我必须向用户展示以我在值字段中提到的特定方式进行记录。我必须按user_id而不是主要ID进行订购。我按以下顺序需要对象:[5, 4, 2, 1, 1, 1]

我正在使用pluck来查看特定的列而不是对象。

Project.where('user_id IN (?)', [5,4,2,1]).pluck(:user_id)
#=> [1, 1, 1, 2, 4, 5]

但是上面的查询返回[1, 1, 1, 2, 4, 5]而不是[5, 4, 2, 1, 1, 1]

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,Rails查询将按记录的ID对记录进行排序。如果要保留顺序作为值字段,请尝试以下代码。

user_ids = [5,4,2,1]
Project.where(user_id: user_ids).order("FIELD(user_id, #{user_ids.join(',')})").pluck(:user_id)