where metoda zwraca ActiveRecord::Relation obiekt i sam z siebie ten obiekt nie wysyła zapytania do bazy danych. Liczy się to, gdzie używasz tego przedmiotu. join metoda leniwy ładuje zapytanie do bazy danych, wykorzystując powiązaną tabelę, ale ładuje tylko Home do pamięci jako powiązany User tabela nie jest wymagana. Następnie masz merge , co merge Metoda nie jest prostym sposobem użycia nazwanego zakresu w połączonym modelu. Coś jak
class Home < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :home
scope :available, ->{ where(available: true) }
end