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

这个:

- book.prices.order(:currency_code).each do |price| 

按货币代码按字母顺序返回所有书籍的价格:

 AUD 19.99 GBP 9.99 NZD 26.00 USD 14.95 

现在,我怎么能整齐地让GBP始终出现在列表的顶部,其他人按字母顺序排序,如下所示:

 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| 

适用于您的情况。
您可以在rails console检查生成的sql:

 book.prices.order("CASE WHEN currency_code = 'GBP' THEN 1 ELSE 2 END, currency_code").to_sql 

并检查,它是否适用于您的数据库。

另一种方法是添加额外的列进行排序,这样你甚至可以将commonwelth货币放在别人面前等。