我正在尝试在活动记录中执行"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')
答案 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)
一个不可知的选项是将您的状态值移动到另一个模型中,并为排序顺序提供额外的属性。