Railsでenumを使ったselectタグ


RailsでActive Recordのenumのカラムに対してselectタグを設置する手順です。
enumを使うことでマジックナンバーを隠蔽し、意味がわかりやすい値やメソッドを使って処理ができます。

🗽 Modelのenum

Model側にenumをカラムに設定します。

class Article < ActiveRecord::Base
enum status: { deleted: 0, draft: 1, published: 2 }
end

😀 Viewのform

View側にFormを設定します。deletedpublishedをそのまま使う場合はこちら。

<%= f.select :status, Article.statuses.keys.to_a, {} %>

続いて日本語で表示する場合はこちら

<%= f.select :status, Article.statuses.map { |k, v| [t(articles.status.#{k}), v] %>

ロケールファイルconfig/locales/ja/status.ymlには次のように記述します。

ja:
articles:
status:
deleted: '削除済'
draft: '下書き'
publish: '公開中'

🎃 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍