按字母顺序排序,但顶部有一个值

2023-11-27

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(使用前将#替换为@)

按字母顺序排序,但顶部有一个值 的相关文章

随机推荐