2010-02-02 13 views
6

Mi sto semplicemente tuffando in ActiveRecord e non sono riuscito a trovare una risposta alla mia domanda. Se sto aggiornando gli attributi di un oggetto e poi richiamando save() ... ActiveRecord salverà sul DB SOLO quando i nuovi valori sono diversi dai vecchi valori?Informazioni sugli aggiornamenti Simple ActiveRecord nelle guide

Diciamo che faccio qualcosa di simile:

thing_to_update = Thing.find_or_create_by_code(some_code) 
if thing_to_update.name != some_name 
    thing_to_update.update_attribute(:name, some_name) 
end 

Non voglio fare le chiamate in più per il db se io non devo perché avrò potenzialmente essere necessario aggiornare un sacco di oggetti. Ho provato a leggere i documenti e non menziona nulla sul confronto di nuovi valori con quelli vecchi. Mi sto perdendo qualcosa qui?

Grazie

risposta

4

ActiveRecord sarà non aggiorna il tuo record se nessun attributo è cambiato. Puoi verificare tu stesso chiamando thing_to_update.save dalla console e osservando il log. ActiveRecord caricherà il record, ma non tenterà di aggiornarlo.

Problemi correlati