この記事を書いた背景
データ保存時の制約の指定の仕方が、マイグレーションファイルとモデルファイルとそれぞれに書く方法があることを知ったので、改めて代表的なバリデーションをまとめてみました。(結構前に勉強したことですが、改めてqiitaにまとめていこうと思います。)
実施環境
macOS Catalina 10.15.7
VS Code 1.50.0
Ruby 2.6.5
Rails 6.0.0
①NOT NULL制約
→データが空の状態では保存ができない制約
【マイグレーションファイルへの書き方】
null: false
t.string :address, null: false
【モデルファイルへの書き方】
presence: true
validates :address, presence: true
②一意性制約
→重複して同じデータを保存できない制約
【マイグレーションファイルへの書き方】
unique: true
t.string :address, unique: true
【モデルファイルへの書き方】
uniqueness: true
validates :address, uniqueness: true
③主キー制約
→データが空の状態では保存ができない、かつ、重複して同じデータを保存できない制約
(NOT NULL制約かつ一意性制約)
(idカラムには自動で設定される制約)
【マイグレーションファイルへの書き方】
primary_key: true
t.string :address, primary_key: true
※モデル名のID以外を主キーにわざわざ設定することは少ないと思うので、あまり使わないと思います。
※モデルファイルへの書き方は調べた限りどうやらなさそうです。
④外部キー制約
→外部キーとなるデータが必ず存在しないとデータ保存できない制約
【マイグレーションファイルへの書き方】
foreign_key: true
t.string :address, foreign_key: true
※モデルファイルへの書き方は調べた限りどうやらなさそうです。