Railsのenumで定義したシンボルは真偽値を返したり破壊的変更ができる
こんにちは!kossyです!
かなり久々のブログの執筆です、、、
流石にアウトプットしなさすぎてまずいので、簡単なことでいいのでアウトプットをしてみます。
さて、今回は、Rails4系から使えるようになったenumのTips的なことを
ブログに残してみたいと思います。
真偽値を返す使い方
例えば、下記のようにモデルに定義したとします。
app/models/user.rb enum role: [:admin, :normal]
このように定義すると、
@user = User.create role: :admin @user.admin? => true
のように、シンボルで定義したものに?をつけると、roleの値がそのシンボルかどうかの真偽値を返すことができます。
モデル内のメソッドで使いたいときは、
def permit_admin if admin? 処理 end end
みたいに使えます。
破壊的変更もできちゃう
次は破壊的変更です。
@user = User.first @user.role => "normal" @user.admin! => true @user.role => "admin"
ってな感じで使えます。
enumは配列型で定義するやり方だけでなく、ハッシュ型で定義するやり方もあるので、
コード規約に従って記述しましょう。。。