Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wann führt Rails die Abfrage aus und lädt in den Speicher?

Das where -Methode gibt eine ActiveRecord::Relation zurück Objekt, und dieses Objekt selbst gibt keine Datenbankabfrage aus. Es kommt darauf an, wo Sie dieses Objekt verwenden. join -Methode lädt ebenfalls faul die Datenbankabfrage, indem sie die zugehörige Tabelle verwendet, aber nur das Home lädt Tabelle als zugeordneter User in den Speicher Tisch ist nicht erforderlich. Danach haben Sie merge , was merge Die Methode does ist eine einfache Möglichkeit, einen benannten Bereich für ein verbundenes Modell zu verwenden. Etwas wie

class Home < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :home

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