AR삽질러

Rails 一日一つメソッド (Day31) joinsメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day31) joinsメソッド

아랑팡팡 2024. 2. 8. 19:11
728x90

 

Rails 一日一つメソッド (Day31) joinsメソッド

 

joinsメソッドどは

 - 関連するテーブル同士を結合(内部結合)してくれるメソッドの事で、関連するテーブルと内部結合したデータを取得する際に便利ばメソッド。

モデル名.joins(:関連名)
# 指定したモデルと関連している他のモデルをSQLのINNER JOINを使ってJoinする。

 

joinsメソッド例

 - Userモデルのインスタンスは複数のCatインスタンスと接続され、各Catインスタンスは1つのUserインスタンスに属する。 joinsを使ってこのような関係を持つレコードを照会することができる。

class User < ActiveRecord::Base
	has_many :cats
end


class Cat < ActiveRecord::Base
	belongs_to :user
end

 

joinsメソッド使用例

 1) Userと関連性がある 

User.joins(:cats)
SELECT 'users'.* FROM 'usres' INNER JOIN 'cats' ON 'cats'. 'owner_id' = 'owner'.'id

 

 2) 特定の条件を満たすCat付きUserを取得

User.joins(:posts).where(posts: { published: true })

 

 3) 特定のフィールドを含む結果を取得

User.joins(:posts).select('users.*, COUNT(posts.id) as posts_count').group('users.id')

 

 


 

 

 

 

 

 

 

 

728x90
반응형
LIST