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

🐹 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)