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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です