sql >> Base de Datos >  >> RDS >> Mysql

¿Cuándo realiza Rails la consulta y la carga en la memoria?

El where método devuelve un ActiveRecord::Relation objeto, y por sí mismo este objeto no emite una consulta de base de datos. Lo que importa es dónde usas este objeto. join El método también carga de forma diferida la consulta de la base de datos utilizando la tabla asociada, pero solo carga el Home tabla en la memoria como el User asociado no se requiere mesa. Luego tienes merge , qué merge El método es una forma simple de usar un alcance con nombre en un modelo unido. Algo como

class Home < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :home

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