🏢
【Rails】buildメソッドの使い分け(1対1、1対多、多対多)
buildメソッド
- インスタンスを生成するメソッド
-
new
メソッドと同じ - DBに保存はされずにインスタンス生成のみ
- モデルを関連付ける時に使われる
関連付けによっての使い方の違い
1対1:build_関連付けのメソッド名(単数形)
1対多:関連付けのメソッド名(複数形).build
多対多:関連付けのメソッド名(複数形).build
以下に具体的な使用例を示します。
userとprofile(1対1)
userモデル
class User < ApplicationRecord
has_one :profile
end
prifileモデル
class Profile < ApplicationRecord
belongs_to :user
end
使用例
@user = User.new
@profile = @user.build_profile(profile_params)
userとpost(1対多)
userモデル
class User < ApplicationRecord
has_many :posts
end
postモデル
class Post < ApplicationRecord
belongs_to :user
end
使用例
@user = User.new
@post = @user.posts.build(post_params)
postとtag(多対多)
postモデル
class Post < ApplicationRecord
has_many :tagging
has_many :tags, through: :tagging
end
tagモデル
class Tag < ApplicationRecord
has_many :tagging
has_many :posts, through: :tagging
end
taggingモデル(中間テーブル)
class Tagging < ApplicationRecord
belongs_to :post
belongs_to :tag
end
使用例
@post = Post.new
@tag = @post.tags.build(tag_params)
Discussion