83927


Railsで作成されたアプリでpostgresqlのテーブルにusersがあって列名がmodeみたいな形になっていてmodeには数値が`1,2,3`
のどれかが数値で格納されているんですけどそれを
`User.first.mode`のように取り出すと数値ではなくモード名文字列、（例：プライベート）で返ってくるのですが、これは一体どのような仕組みになっていると考えられるのでしょうか？また単純に数値で返して欲しい場合にはどのように取得したら良いでしょうか？  
詳しい方、宜しくお願い致します。


CC BY-SA 4.0
2021-12-02T12:36:04.813
83916
2021-12-03T01:23:56.047
22565
question
ruby-on-rails ruby
Railsでデータベースに入ってる値とアクティブレコードで取り出した値が違う。


情報が足りないので推測ですが、該当の属性にenumを設定していませんか？

<http://api.rubyonrails.org/classes/ActiveRecord/Enum.html>

仮にそうだとすると、enumの機能として自動で数値から文字列に変換しています。  
変換前の値を取り出したい場合は次のようにするとよいです。

[code]

    User.first.read_attribute_before_type_cast(:mode)
    
[/code]


CC BY-SA 4.0
2021-12-03T01:23:56.047
83927
2021-12-03T01:23:56.047
205
83916
answer