はじめに
ポートフォリオ作成中、has_one(1対1)の関連付けが必要になりました。
公式ドキュメントなど読んで、「これは頻繁に使いそうだな」と思ったメソッドを紹介します。
サンプルモデル
ユーザー(User)がプロフィール(Profile)を作成できると考えます。
app/models/user.rb
class User < ApplicationRecord
has_one :profile
end
app/models/profile.rb
class Profile < ApplicationRecord
belongs_to :user
end
関連メソッド
#関連付けされたオブジェクトを返す
@user.profile
#関連付けされた新しいオブジェクトを返す
@user.build_profile(self_introduction: "I am a beginner")
#関連付けされたオブジェクトを作成する
@user.create_profile(self_introduction: "I am a beginner")
あとがき
今回紹介したメソッドが全てではありません。また、has_manyで追加される関連メソッドと似ている部分があるのでご注意を。
参考
Active Record の関連付け
https://railsguides.jp/association_basics.html#has-one%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%82%8B%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89