references型とは
Ruby on Rails のマイグレーションで使われるデータ型の一つで、
他のモデルへの関連付け(リレーションシップ)を表すために使用されます。
使用例
例えば、コメント(Comment)が投稿(Post)に属しているという関係を設定したい場合、以下のようなマイグレーションを生成します。
rails generate migration Comment Post:references
これにより生成されるマイグレーションファイルには、post_id
カラムを posts
テーブルに追加するコードが含まれます。さらに、post_id
カラムには外部キー制約とインデックスが設定されます。
生成後(models) belongs_to
コマンド入力後、models配下のcomment.rbに以下のコードが生成されます。
単数形であることに注意
belongs_to :モデル名(単数形)
class Comment < ApplicationRecord
belongs_to :post
end
belongs_toとは
モデル間の関連付けを定義するためのメソッド。
あるモデルが他のモデルに「属している」(belong to)ことを示します。
マイグレーションファイルもチェック
class CreateAnswers < ActiveRecord::Migration[7.0]
def change
create_table :answers do |t|
t.string :name
t.text :content
t.references :question, null: false, foreign_key: true
t.timestamps
end
end
end
t.references
answersモデルと紐づきがある事を示している
null: false
カラムがnullになることを禁止
このオプションを適用することで、そのカラムには必ず値が入力される必要があり、データベースをからに references型とは
Ruby on Rails のマイグレーションで使われるデータ型の一つで、
他のモデルへの関連付け(リレーションシップ)を表すために使用されます。
使用例
例えば、コメント(Comment)が投稿(Post)に属しているという関係を設定したい場合、以下のようなマイグレーションを生成します。
rails generate migration Comment Post:references
これにより生成されるマイグレーションファイルには、post_id
カラムを posts
テーブルに追加するコードが含まれます。さらに、post_id
カラムには外部キー制約とインデックスが設定されます。
生成後(models) belongs_to
コマンド入力後、models配下のcomment.rbに以下のコードが生成されます。
class Comment < ApplicationRecord
belongs_to :post
end
belongs_toとは
モデル間の関連付けを定義するためのメソッド。
あるモデルが他のモデルに「属している」(belong to)ことを示します。
マイグレーションファイルもチェック
class CreateAnswers < ActiveRecord::Migration[7.0]
def change
create_table :answers do |t|
t.string :name
t.text :content
t.references :question, null: false, foreign_key: true
t.timestamps
end
end
end
t.references
answersモデルと紐づきがある事を示している
null: false
カラムがnullになることを禁止
このオプションを適用することで、そのカラムには必ず値が入力される必要があり、データベースを空のままにするのを防ぎます。
foreign_key: true
外部キー制約のオプションを有効にしている
このオプションを適用することで、親テーブルに対象が存在しない場合、子テーブルの保存ができない設定。