I need to create a sort of transaction around some Active Record objects that perform many insert/updates. Example: class MyObject def transaction &block @my_var = value self.instance_eval block end end MyObject.new.transaction do Model.create Model.collection.create etc...... end I have a gem that add a method into AR::Base and I need to read the variables setted by the transaction inside the method at runtime. Any way I can access the block scope from there inside? Thanks Andrea -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/Xo1PIgOKoVIJ. For more options, visit https://groups.google.com/groups/opt_out.
On Sep 18, 9:55 am, andreacfm <acampolon...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I need to create a sort of transaction around some Active Record objects > that perform many insert/updates. > Example: > > class MyObject > def transaction &block > @my_var = value > self.instance_eval block > end > end > > MyObject.new.transaction do > Model.create > Model.collection.create > etc...... > end > > I have a gem that add a method into AR::Base and I need to read the > variables setted by the transaction inside the method at runtime. > Any way I can access the block scope from there inside? >Why not use an actual transaction? If you''re generating some per transaction value then pass it as an argument to the methods you''re calling inside the transaction. Fred> Thanks > > Andrea-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Fred. The issue is that I should have to override lots of Model to support it. Ex: Model.create transaction_value: value I would like something more elegant. Andrea On Sep 19, 2012, at 9:41 AM, Frederick Cheung <frederick.cheung-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > On Sep 18, 9:55 am, andreacfm <acampolon...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> I need to create a sort of transaction around some Active Record objects >> that perform many insert/updates. >> Example: >> >> class MyObject >> def transaction &block >> @my_var = value >> self.instance_eval block >> end >> end >> >> MyObject.new.transaction do >> Model.create >> Model.collection.create >> etc...... >> end >> >> I have a gem that add a method into AR::Base and I need to read the >> variables setted by the transaction inside the method at runtime. >> Any way I can access the block scope from there inside? >> > > Why not use an actual transaction? If you''re generating some per > transaction value then pass it as an argument to the methods you''re > calling inside the transaction. > > Fred > > >> Thanks >> >> Andrea > > -- > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit https://groups.google.com/groups/opt_out. > >Andrea Campolonghi acampolonghi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit https://groups.google.com/groups/opt_out.