ruby-on-rails - validations - ruby on rails associations




Caricamento lento in Rails 3.2.6 (2)

Ho trovato in diverse risorse online rispetto a quando facevo cose come:

cars = Car.where(:colour => 'black')

La query non viene eseguita finché non fai qualcosa del tipo:

cars.each {|c| puts c.name } 

Tuttavia, nel mio progetto Rails 3.2.6, quando faccio ciò che segue nella console:

User.where(:first_name => "John")

Ottengo il seguente:

 User Load (1.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`first_name` = 'John'

Quindi, la query viene eseguita correttamente?

Dove è andato il carico pigro? O mi sto perdendo qualcosa qui?


Ho eseguito un test utilizzando sqllite3 per tentare di scoprire se la ricerca AR Base ha effettivamente effettuato una query immediatamente. Ecco cosa ho fatto:

rows=Customer.orders.find(1,2)

Allora ho fatto:

ActiveRecord::Base.remove_connection;
p rows

Ho avuto un errore di connessione non stabilito.

Ho anche provato "p rows" subito dopo la query senza rimuovere la connessione e ottenuto le 2 file che mi aspettavo.

Questo è stato fatto con activerecord-3.1.3. La mia conclusione è che in 3.1.3 la base find aspetta di fare la query fino a quando si accede alla matrice (Relation?).

Sono nuovo a Ruby quindi il mio test potrebbe non essere progettato correttamente.


Le chiamate della console inspect il risultato di qualsiasi espressione digitato in modo che possa visualizzarla. inspect è una delle cose che attiverà il carico della query. Se invece lo fai

x = User.where(:first_name => 'John'); false

quindi non dovresti vedere nessuna query perché questa volta la console sta chiamando inspect su false anziché sull'oggetto relazione Active Record.





activerecord