我有一个问题表。它有一个虚拟的问题,我想随机得到问题,但是在返回的ActiveRecord集合中,这个问题总是应该是最重要的。我可以使用Random()
函数随机购买记录,该函数工作正常,但虚拟问题也有随机位置,我不想要,我希望它在第一个位置。任何解决方案都会有所帮助。
问题表栏:id, statement, answer
虚拟问题有空白的陈述。
我正在使用
查询Question.all.order("Random()")
我正在使用PostgreSQL。
答案 0 :(得分:2)
第一个选项:
offsetof(ABC,:b)
第二个选项:
select_clause = "(CASE WHEN (statement = '') THEN 0 ELSE Random() END) as dummy, questions.*"
Question
.select(select_clause)
.order('dummy')
修改:select_clause = "(statement <> '') as dummy, questions.*"
Question
.select(select_clause)
.order('dummy, Random()')
在两个选项中都不应包含NULL