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

🐝 参考リンク

😆 サービスの成長に真剣にコミットしてくれる人募集!

個人で開発しているサービスが月間21万PV、月次20%PV増、直近は1万PV/日まで成長してきました。 誰でも「安く」、「良いもの」を「すぐに見つけて」買い物ができるサービスです。 売買の体験を圧倒的に「簡単」にするプラットフォームに成長させたいです。

一緒にグロースに挑戦してくれる Rails エンジニア、デザイナ、ディレクターさんを探しています。 法人化を予定しており、スキルに応じて適切な給与をお支払いします。(一定割合は Exit 時)

様子見大歓迎です!少しでも興味を持って頂けるようであれば、『 bosyu 』からご連絡ください!

🖥 VULTRおすすめ

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

📚 おすすめの書籍