where
メソッドはActiveRecord::Relation
を返します オブジェクトであり、それ自体ではこのオブジェクトはデータベースクエリを発行しません。重要なのは、このオブジェクトを使用する場所です。 join
メソッドもlazyは、関連付けられたテーブルを利用してデータベースクエリを読み込みますが、Home
のみを読み込みます。 関連付けられたUser
としてメモリにテーブルを配置します テーブルは必要ありません。その後、merge
があります 、何merge
メソッドdoesは、結合されたモデルで名前付きスコープを使用する簡単な方法です。
class Home < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :home
scope :available, ->{ where(available: true) }
end