Access block scope from AR object

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

On Sep 18, 9:55am, andreacfm [email protected] wrote:

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

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 C.
[email protected] wrote:

    self.instance_eval block

variables setted by the transaction inside the method at runtime.
Thanks

Andrea


You received this message because you are subscribed to the Google G. “Ruby
on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Andrea C.
[email protected]