我在rails 3中有一个简单的查找,可以收集用户帐户。
Account.where(:user_id => @user)
Account模型有一个'default'布尔字段。当用户添加许多帐户时,我希望默认帐户始终是循环中的第一个。订单似乎不适用于布尔字段。
Account.where(:user_id => @user, :order => "default DESC")
有没有办法订购查询来处理这个问题,还是应该拆分查询并在单独的查找中找到默认帐户?
答案 0 :(得分:4)
尝试Account.where(:user_id => @user).order("default DESC")
- 在您的:order
子句中放置where()
不会对结果集进行排序。
更清洁的解决方案可能是添加范围。
scope :default_first, order(arel_table[:default].desc)
然后你可以打电话(假设你的关系设置正确):
@user.accounts.default_first.all