2017-08-31 44 views
0

我有一个模型叫extra。这里看起来如何;Rails在哪里,分类和组合相同的表

#<Extra id: nil, name: nil, price: nil, per: nil, compulsory: nil, online_payment: nil, payment_per_person: nil, is_included: nil, created_at: nil, updated_at: nil, user_id: nil> 

我想先按is_included对它们进行排序,它的确是这样。然后我想排序compulsory是真的,最后compulsory是错误的。然后我想把它们结合起来。

基本上,我想分组他们,因为用户可以保存他们无序。然后删除任何人存在两次。

我可以在视图或before_save回调函数上执行吗?

感谢

回答

2

Extra.order('is_included desc, compulsory desc')将返回你想要的结果,你永远不应该对视图执行SQL查询。

+0

你也可以通过排序desc来解释它是如何工作的,而不会将真或假? –

+1

这是一个[链接](https://dba.stackexchange.com/questions/8504/why-are-nulls-sorted-first),它会给你一个想法。 在sql中,true和false值存储为1和0.因此,按**降序排列'is_included'将按降序对附加项进行排序,然后对**结果**进行排序,并使用强制属性降序会给你最终的结果。 我与您分享的链接将帮助您了解使用布尔值对空值进行排序。 –