AR삽질러

Rails 一日一つメソッド (Day21) Associations-has_oneメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day21) Associations-has_oneメソッド

아랑팡팡 2024. 1. 12. 14:25
728x90

 

Rails 一日一つメソッド (Day21) Associations-has_oneメソッド

 

has_oneメソッドとは

 - RailsのActive Record連関関係の一つとして、一つのモデルが他のモデルと1:1の関係を持つことを表す。

 - has_oneメソッドを使うことで一つのモデルのインスタンスが他のモデルの一つのインスタンスと紐づける事ができる。

 

has_oneメソッド構文

 - 一つのモデルは一つのモデルを持つ関係。

class モデル名 < ActiveRecord::Base
	has_one :関係名, [ オプション ] # 単数系
end

class ModelNname < ActiveRecord::Base
	has_one :associated_model, [ オプション ]
end

 - モデル名 : has_one関係を持っているモデルの名前。

 - :関係名 ( associated_model ) : 関係を結んでいる他のモデル名。

 - [ オプション ] : 必要なオプションを指定できる。

 

関係モデル(associated_model )

 - belongs_to

class モデル名 < ActiveRecord::Base
	belongs_to :モデル名 # 単数系
end

 


has_oneの特徴とオプション

 

 1) 1対1の関係
 - has_one関係を使用すると、2 つのモデル間の1対1の関係が形成される。たとえば、ユーザ(User)がプロファイル(Profile)を1つだけ持つことができれば、ユーザモデルにhas_one:profileと表現する。


 2) 主なオプション
 :class_name : 接続されたオブジェクトのクラス名が基本ルールと異なる場合に使用する。
 :foreign_key : 外来鍵の名前がデフォルト値と異なるときに指定する。
 :primary_key : 接続するモデルの主キーがデフォルト値と異なる場合に使用。
 :dependent : 関連オブジェクトのライフサイクルを管理します。 (:destroy, :nullify など)
 :through : 他のモデルによる間接的な関係を設定します。

 

 3) 従属性管理
 - dependent: :destroyオプションは、メインモデルオブジェクトが削除されるときに関連オブジェクトも一緒に削除されるようにしする。

 


例題) - ユーザーとプロファイルユーザー(User)とプロファイル(Profile)の関係をモデリングする例を見てみましょう。

class User < ActiveRecord
	has_one :profile, dependent: :destroy
end

class Profile < ApplicationRecord
	belongs_to :user
end

 - Userモデルは has_one :profileを使って一つの Profileと連関される。

 - Profileモデルは belongs_to :userを使って一つの Userに属する。

 - dependent: :destroyはユーザーが削除される時に該当するユーザーのProfileも一緒に削除される。

 

 

 

 

 

728x90
반응형
LIST