You can use the method update_column
that will skip all callbacks of your model:
self.update_column(:filename, filename)
Or you could use the method update_all
, wich follows the same behavior
self.class.where('id = ?', self.id).update_all(:filename => filename)
And last but not least, my personal favorite:
self.filename = filename
self.send(:update_without_callbacks)
This one makes it pretty clear that all callbacks are been ignored, what is very helpful
Also, as a different alternative, you coud use after_create
instead of after_commit
if you want to run the generate
method only when a new record is saved
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…