こんにちは!kossyです!
さて、今回はRailsのenumで定義したシンボルを元に文字列を返すメソッドを定義したいと思います。
enumの詳しい説明は割愛します。
実装方法
class User enum role: [:general, :admin] end
Userクラスがroleというカラムを持っていて、値をenumで管理している例です。
この場合、view側に「一般ユーザー」または「管理者」という表示をしたいという要望が出た場合、どう実装すればいいでしょうか。
app/views/users/show.html.haml = current_user.role == :general ? '一般ユーザー' : '管理者'
みたいな感じでしょうか。
これでもいいかと思いますが、enumのシンボルの値を4,5つと定義した場合は、実装がややこしくなります。
そこで、
class Item enum status: [:not_ordered, :ordered, :pick_up, :delevered, :unknown] def status_str { not_ordered: '未発注', ordered: '発注済', pick_up: '配達中', delevered: '配達済み', unknown: '未確認' }[status.to_sym] end end
こうすれば、
@item.status_str # @item.status == :ordered => 発注済
のように、文字列を取り出すことができます。