IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Rails で boolean型の属性でソートしてみる

 

使ってみる

サンプル用のプロジェクトを作成する。

  • rails new boolean_sort_sample
  • cd boolean_sort_sample

 

サンプル用のモデルを scaffold して作成する。

ここでは、棒にあたりが書いているアイスキャンディーをモデルにする。なお、アイスキャンディーは和製英語なので、Popsicle モデルを作成する。また、lottery の値で当たりかはずれかを管理することにする。

  • bin/rails g scaffold Popsicle flavor:string lottery:boolean
  • bin/rails db:migrate

f:id:matt-note:20190710231857p:plain

 

コンソールを起動して、サンプル用のデータを作成する。

  • bin/rails c
  • Popsicle.create(flavor: "ソーダ", lottery: false)
  • Popsicle.create(flavor: "コーラ", lottery: true)
  • Popsicle.create(flavor: "グレープフルーツ", lottery: false)
  • Popsicle.create(flavor: "コーラ", lottery: false)
  • Popsicle.create(flavor: "コーラ", lottery: true)

 

サーバーを起動して、http://localhost:8888/popsicles にアクセスすると、以下のようになる。

f:id:matt-note:20190710231105p:plain

 

app/controllers/popsicles_controller.rb を編集する。

f:id:matt-note:20190710232316p:plain

 

ブラウザをリロードしてアクセスすると、以下のように boolean 型でソートできる。

f:id:matt-note:20190710231753p:plain

-> 普通にソートできた。

 

まとめ

Rails の order メソッドで、普通にboolean型の属性でもソートできる。

true を上に持っていきたい場合は、:desc オプションを付与する。