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