我有一个TraitQuestion模型,该模型具有许多特征或答案-每个特征或答案的值都为1、2、3或-3105(以上都不是)。我无法更改这些值,因为它们是外部API所必需的。
我想按值对它们进行排序,但是当我这样做时,-3105的答案会显示在顶部,即使它显示“ None of the above”:
Answer 4 = -3105
Answer 1 = 1
Answer 2 = 2
Answer 3 = 3
关于如何订购此产品的任何想法
1
2
3
-3105?
我对SQL还是很陌生,但似乎应该可以执行以下操作:
@trait_question.traits.order('CASE WHEN value AS int > 0 then 1 ELSE 0 END')
但这是行不通的。有什么想法可以调整顺序调用SQL,以便按正确的顺序对它们进行排序吗?
编辑:这是通过Amazon AWS的Postgresql 9.4.1
我不知道这是否适合您,但请尝试以下操作:
@trait_question.traits.order('ABS(value)')
在ABS
将负值更改为每次正因此取绝对值。如果您的数据库字段是,string
那么您可以按照Tom为他工作的建议执行以下操作:
@trait_question.traits.order('ABS(CAST(value AS int))')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句