LoginSignup
2
1

More than 1 year has passed since last update.

【Rails】enumを使ってステータス管理をしよう!

Posted at

対象者

  • 商品等ののステータス管理を実装予定の方
  • セレクトタグを実装予定の方

目的

  • ステータスで進捗や状況を管理できるような機能を実装する

実際の手順と実例

1.前提

  • ケーキ屋さんのECサイトを作成しています。
  • ここでは注文ステータスを取り扱うので、モデル名「order」、カラム名「order_status」とします。
  • 管理者が注文ステータスを操作できるようにしたいので、

2.カラム追加

まずは対象のモデル(order)にカラムを追加していきます

$ rails g migration AddOrderStatusToOrder order_status:integer

enum(イーナム)で数字管理していくのでデータ型はintegerで与えます。

3.モデルにenumを追記

以下の通り書いていきます。

order.rb
  enum order_status: {
     "入金待ち":0, "入金確認":1, "製作中":2, "発送準備中":3, "発送済":4
  }

番号が0から始まっている点に注意です。
表示したい内容とそれに合わせて数字を順に並べていきます。

4.Viewで表示

今回は、管理者が操作して保存できるようにしたいので、
form_withを使って内容を保存できるように更新ボタンも付けます

orders/show.html.erb
         <%= form_with model: @order, url: admin_order_path, method: :patch, local: true do |f| %>
            <%= f.select :order_status, Order.order_statuses.keys, class: "order_status" %>
            <%= f.submit "更新" , class: "btn btn-outline-success" %>
          <% end %>

@order = Order.find(params[:id])とControllerに定義しています。また、ストロングぱらめーたーにも、permitでorder_statusを入力しています。

これで実装完了です。

参照

【Rails】enumを使ってステータス管理を行う

【Rails】enumを使用したセレクトボックスの実装とDBへの保存

投稿者コメント

プログラミングスクールで勉強学んだことをそのままアウトプットしてみました。今後も7月に開発したものの中からどんどん発信していきます!

My Profile

プログラミング学習歴②ヶ月目のアカウントです!
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。 

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1