Il where
il metodo restituisce un ActiveRecord::Relation
oggetto e di per sé questo oggetto non emette una query del database. È dove usi questo oggetto che conta. join
anche il metodo lazy carica la query del database utilizzando la tabella associata, ma caricando solo la Home
tabella in memoria come User
associato la tabella non è richiesta. Successivamente hai merge
, cosa merge
il metodo fa è un modo semplice per utilizzare un ambito denominato su un modello unito. Qualcosa come
class Home < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :home
scope :available, ->{ where(available: true) }
end