일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- メソッド
- javascript
- 一日一つメソッド
- java
- 인프런
- 日本語
- 자바
- C로 시작하는 컴퓨터 프로그래밍4판
- Web
- vscode
- 디지몬
- springboot
- nico
- Spring
- 비즈니스일본어
- Flutter
- rails
- 건담베이스
- DART
- rails7
- html
- 반다이몰
- ruby
- CSS
- 연습문제
- Python
- 単語
- 건담
- 일본어
- jsp
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day21) Associations-has_oneメソッド 본문
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も一緒に削除される。
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
Rails 一日一つメソッド (Day23) flashメソッド (0) | 2024.01.31 |
---|---|
Rails 一日一つメソッド (Day22) Associations- 中間テーブルとthroughオプション (0) | 2024.01.15 |
Rails 一日一つメソッド (Day20) Associations-has_manyメソッド (0) | 2024.01.11 |
Rails 一日一つメソッド (Day19) Associations-belongs_toメソッド (0) | 2024.01.10 |
Rails 一日一つメソッド (Day18) Associations (0) | 2024.01.09 |