Mysql
 sql >> Database >  >> RDS >> Mysql

Quando Rails esegue la query e carica in memoria?

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