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: '公開中'

🐡 参考リンク

📚 おすすめの書籍