hi,
i wanted to implement multidatabase transactions, in a project of
mine.
The AWDR book by DHH and Sam Ruby, says that rails does not support
easily the usecase where we are updating multiple databases
concurrently.
eg:
==== CODE START ===the Account and User models have different connections.
acc1 = Account.find(10)
acc1 = Account.find(20)
begin
Account.transaction do
acc1.withdraw(100)
acc2.deposit(100)
User.transaction do
acc1.user.balance = acc1.balance
acc1.user.save!
acc2.user.balance = acc2.balance
acc2.user.save!
end
raise "the Account model will be rolledback not not the User model
as both the classes have diff. connections"
end
rescue Exception => err
puts "Error | #{err.class} #{err.to_s} #{err.backtrace}"
#to get the current values in the db
[acc1.acc2].each {|x| x.reload }
end
what will happen is that the changes for:
acc1.withdraw(100)
acc2.deposit(100)
will be rolled-back
but the changes for:
acc1.user.balance = acc1.balance
acc2.user.balance = acc2.balance
will not be rolledback, as they are on different database connections.
==== CODE END ===
How to solve this, how to keep the transaction across db
connections.
any ideas?
questions?
1) can i manually maintain the transaction, rather than a DSL. the DSL
enforces a nesting relationship but i want a grouping
relationship.
2) This same problem does not occur if the db connection is the same,
how?
3) how do we check that two db connections are different,
is <Model>.connection == <Model>.connection sufficient?
4) what does the option key :joinable do in active_record/
connection_adapters/abstract/database_statements.rb. it is not
mentioned in the docs.
i wanted to implement multidatabase transactions. How do we do this?
Has anyone faced this problem?
thanks for the help,
deepak.
--
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 this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.