orderで特定の文字列順に並び替える
数字順で昇順、降順で並び替えるのはよくありますが、 カラムに文字列を設定してしまっていると、並び替えたくなったときにすこし不便ですね。 そんなときにはfieldを使うとうまく並び替えれます。
select id, name from items order by field(items.size, 'XL', 'LL', 'L', 'M', 'S', 'SS', 'XS')
なようなことができます。
Railsで使う場合もscopeに登録しておくと便利そうです。
scope :order_size, -> { order("field(items.size, 'XL', 'LL', 'L', 'M', 'S', 'SS', 'XS')") }