スポンサーリンク
概要
Active RecordのModelにenumの値のフィールドを追加して、フォームにチェックボックスを追加する方法のメモ。
スポンサーリンク
環境及び前提
Mac OS 10.15.4
Ruby 2.6.3p62
Rails 6.0.2.2
スポンサーリンク
方法
モデルのマイグレーション
今回は既存のモデル(articles)に対して新たにintegerのフィールドを追加する。
rails generate migration AddColumnArticles
でマイグレーションファイルを作成後、下記のように追加する。
1 2 3 4 5 |
class AddColumnArticles < ActiveRecord::Migration[6.0] def change add_column :articles, :status, :integer, null: false, default: 0 end end |
モデルの定義
enumで同名のフィールドを定義し、値の意味を定義する。
今回は0が公開、1で下書きという意味合いを定義した。
1 2 3 |
class Article < ApplicationRecord enum status: { open: 0, draft: 1 } end |
フォーム画面
フォーム画面には下記のようにチェックボックスを追加する。
第3引数:チェック時の値
第4引数:未チェック時の値
となるので、enumで定義した値と合わせる。
1 |
<%= form.check_box :status, {}, "draft", "open" %> |