This:
- book.prices.order(:currency_code).each do |price|
返回按货币代码字母顺序排列的所有书籍价格:
AUD 19.99
GBP 9.99
NZD 26.00
USD 14.95
现在,我怎样才能巧妙地让英镑始终出现在列表的顶部,而其他货币则按字母顺序排序,如下所示:
GBP 9.99
AUD 19.99
NZD 26.00
USD 14.95
这个答案显示了 SQL 解决方案,但我不确定 Rails 的方式。
由于排序通常是在数据库级别完成的,因此只需使用rails中的SQL解决方案:
- book.prices.order("`currency_code` = 'GBP' desc, currency_code").each do |price|
您可以在 Rails (ActiveRecord) 查询方法中使用 sql 片段。
根据您的数据库,您可能必须选择正确的 SQL 解决方案,所以可能
- book.prices.order("CASE WHEN currency_code = 'GBP' THEN 1 ELSE 2 END, currency_code").each do |price|
适用于你的情况。
您可以在中检查生成的sqlrails console
:
book.prices.order("CASE WHEN currency_code = 'GBP' THEN 1 ELSE 2 END, currency_code").to_sql
并检查它是否在您的数据库中工作。
另一种方法是添加额外的列进行排序,这样您甚至可以将英联邦货币放置在其他货币的前面等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)