Activerecord ORDER BY FIELD

时间:2013-11-11 19:25:28

标签: mysql ruby-on-rails database postgresql activerecord

我正在尝试在活动记录中执行"ORDER BY FIELD"。我知道我可以用MySQL做到这一点,但我试图让我的应用程序不可知并遵循最佳实践。我的生产数据库是PostgreSQL

MySQL看起来像

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')

2 个答案:

答案 0 :(得分:1)

我试图让它成为现实,这就是我的意思。我仍然认为这可以更清洁

Model.select(:id).select(:name).order("status = 'B' DESC, status = 'A' DESC, status = 'D' DESC, status = 'E' DESC, status = 'C' DESC")

答案 1 :(得分:1)

一个不可知的选项是将您的状态值移动到另一个模型中,并为排序顺序提供额外的属性。