Hah, so yes, I was missing something. Thank you! --- *PEDRO PADRON*
2014-02-20 4:20 GMT-03:00 Jeremy Evans <[email protected]>: > On Wednesday, February 19, 2014 8:29:28 PM UTC-8, [email protected]: >> >> Hi there, >> >> Only after I opened an issue at Github I realized I should have posted >> this here before, sorry about that... >> >> From Sequel documentation re: Model Hooks: >> >> So when a model object is created, you want to add a background job that >> will create the thumbnail for the picture. If you used after_save for this >> and transactions are being used, you are subject to a race condition where >> the background job library will check the database table for the record >> before the transaction that saved the record commits, and it won't be able >> to see the record's data. Using after_commit, you are guaranteed that the >> background job library will not get notified of the record until after the >> transaction commits and the data is viewable. >> >> Unless I'm missing something, there is no built-in way to check if the >> current record was new on an after_commit hook. I have a use case where >> I need to perform a background job only for new records, so in the >> after_save hook I'm setting my own flag based on @was_new. >> >> Here we can see that @was_new is reset just before the after_commit hook >> runs: >> https://github.com/jeremyevans/sequel/blob/master/lib/sequel/model/base. >> rb#L1656-L1665 >> >> Could we make @was_new available in the after_commit hook? Or is there >> another to achieve this >> > > @was_new cannot be made available in after_commit, because you never know > when after_commit will run: > > DB.transaction do > model = Model.create(:a=>1) > model.update(:b=>2) > end > > @was_new is a bad idea, and it's my mistake for introducing it. Anyway, > you can do what you want via after_create: > > def after_create > super > db.after_commit{...} > end > > Were I to do it over again, there wouldn't be model commit/rollback hooks, > you would have to call Database#after_commit/after_rollback in the other > model hooks. > > Thanks, > Jeremy > > -- > You received this message because you are subscribed to the Google Groups > "sequel-talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sequel-talk. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sequel-talk. For more options, visit https://groups.google.com/groups/opt_out.
