Ruby before_validation dispara loop infinito de retorno de chamada
@Product Model possui um atributo_1. Se o recálculo for necessário para o atributo_1, antes da validação será chamada. DandoSystemStackError: stack level too deep
Porqueself.save!
aciona obefore_validation
. Como parar o loop infinito de retorno de chamad
before_validation :method_1, :if => :recalculation_required_attribute
Estou usando bloqueio otimista usandolock_version
. 'update_all' não aumentará olock_version
. Então, eu estou usandosave!
. Ele está chamando a aparência infinita da chamada de volta.
def method_1
####
####
if self.lock_version == Product.find(self.id).lock_version
Product.where(:id => self.id).update_all(attributes)
self.attributes = attributes
self.save!
end
end