Cosa è coperto da salvataggio (: validate => false)?
-
27-10-2019 - |
Domanda
Ho appena implementato una serie di abitudini counter_cache
S usando codice come questo:
def after_save
self.update_counter_cache
end
def after_destroy
self.update_counter_cache
end
def update_counter_cache
self.company.new_matchings_count = Matching.where(:read => false).count
self.company.save
end
La mia domanda è questa, cosa fa il comando Model.save(:validate => false)
effettivamente impedire al di là delle cose come validates_with
o before_validation
?
Il mio Counter_Caches personalizzato sarà interessato se mantengo i miei salvataggi esistenti senza convalida?
Soluzione
Se passi in: validate => false, salta il valido? comando. Tutto il resto funziona allo stesso modo.
Puoi controllare il codice qui: http://api.rubyonrails.org/classes/acreverecord/validations.html
def save(options={})
perform_validations(options) ? super : false
end
...
if perform_validation
valid?(options.is_a?(Hash) ? options[:context] : nil)
else
true
end
Altri suggerimenti
Test su Rails 4.2.6 lo mostra .save(:validate=>false)
salterà davvero before_validations
e after_validation
callbacks.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow