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.