0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby on Rails】DB保存時のカラムの制約(代表4つ)

Posted at

この記事を書いた背景

データ保存時の制約の指定の仕方が、マイグレーションファイルとモデルファイルとそれぞれに書く方法があることを知ったので、改めて代表的なバリデーションをまとめてみました。(結構前に勉強したことですが、改めてqiitaにまとめていこうと思います。)

実施環境

macOS Catalina 10.15.7
VS Code 1.50.0
Ruby 2.6.5
Rails 6.0.0

①NOT NULL制約

→データが空の状態では保存ができない制約

【マイグレーションファイルへの書き方】
null: false

20200919092740_create_item.rb
t.string :address, null: false

【モデルファイルへの書き方】
presence: true

item.rb
validates :address, presence: true

②一意性制約

→重複して同じデータを保存できない制約
【マイグレーションファイルへの書き方】
unique: true

20200919092740_create_item.rb
t.string :address, unique: true

【モデルファイルへの書き方】
uniqueness: true

item.rb
validates :address, uniqueness: true

③主キー制約

→データが空の状態では保存ができない、かつ、重複して同じデータを保存できない制約
(NOT NULL制約かつ一意性制約)
(idカラムには自動で設定される制約)

【マイグレーションファイルへの書き方】
primary_key: true

20200919092740_create_item.rb
t.string :address, primary_key: true

※モデル名のID以外を主キーにわざわざ設定することは少ないと思うので、あまり使わないと思います。
※モデルファイルへの書き方は調べた限りどうやらなさそうです。

④外部キー制約

→外部キーとなるデータが必ず存在しないとデータ保存できない制約

【マイグレーションファイルへの書き方】
foreign_key: true

20200919092740_create_item.rb
t.string :address, foreign_key: true

※モデルファイルへの書き方は調べた限りどうやらなさそうです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?