「Rails」バリデーションを追加する方法を初心者向けに解説
モデル設計時にテーブルのカラムにNotNULL制約を付け加えるのを忘れてしまった。。。
そんな時にテーブルのカラムに後からバリデーションを付与する方法を紹介します!
環境
・macOS
・Rails 5.2.6.3
・ruby 2.5.1
既にあるテーブルのカラムにバリデーションを追加する手順
1、新規マイグレーションファイルを作成
2、マイグレーションファイルに追加したいバリデーションを記入
3、rails db:migrateを実行
それでは実践に入っていきます。
実践
私はusersテーブルのnameカラム・emailカラム・passwordカラムにNOTNULL制約を付け加えるのを忘れたので付け加えていきます。上記の3つの手順に従って、
1、新規マイグレーションファイルを作成する
rails g migration change_user_validation
これでマイグレーションファイルの作成が完了。
2、マイグレーションファイルに追加したいバリデーションを記入する
class ChangeUserValidations < ActiveRecord::Migration[5.2]
def change
change_column_null :users, :name, false
change_column_null :users, :email, false
change_column_null :users, :password, false
end
end
これでusersテーブルのnameカラム・emailカラム・passwordカラムにNOTNULL制約を付与するマイグレーションファイルが完成。
3、マイグレーションファイルを実行する
rails db:migrate
これで完成。
今回のNotNULL制約はrailsのモデルではなくDB側に付与されるので、SQL文でNULLのデータを作成しDBに登録しようとするとエラーが出るはずです。NULLのデータが弾かれていると無事に完成です。