Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quand Rails exécute-t-il la requête et se charge-t-il en mémoire ?

Le where la méthode renvoie un ActiveRecord::Relation objet, et par lui-même cet objet n'émet pas de requête de base de données. C'est là où vous utilisez cet objet qui compte. join la méthode charge également la requête de base de données en utilisant la table associée, mais en ne chargeant que le Home table en mémoire en tant que User associé le tableau n'est pas obligatoire. Ensuite, vous avez merge , ce qui merge La méthode est un moyen simple d'utiliser une portée nommée sur un modèle joint. Quelque chose comme

class Home < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :home

  scope :available, ->{ where(available: true) }
end