地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

enumのカラムをinteger型で取り出す方法

スポンサーリンク

Railsでenumに設定したカラムをinteger型で取り出す方法です。

models/user.rb

 enum status: [ :nonactive, :active, :archived]

[:enumで指定したカラム名]で取り出せる!

こんな感じでuserテーブルのstatusカラムをenumで指定しているとします。 enumで指定するとuser.statusでuserのstatusを文字列で取り出せるのですが、API作成の時などにintegerで取り出したい時ありますよね? そんなときは、user[:status]でinteger型で取り出せます。

to_iは常に0が出力される

to_iメソッドを使うとintegerで取り出せている感じがするのですが、常に0が出力されてしまうので注意が必要です。

コンソールで試してみる

下記はコンソールで試してみた結果です!

$ rails c

[1] pry(main)> @user = User.first
[2] pry(main)> @user.status
=> "active"
[3] pry(main)> @user[:status]
=> 1
[4] pry(main)> @user.status.to_i
=> 0