Rails 3. Вложенные транзакции. Исключение в дочернем блоке
Почему не происходит откат изменений ActiveRecord во вложенных транзакциях после исключения в дочернем блоке?
Вот примеры:
1.
>> Client.transaction do
?> Client.create(:name => 'Pavel')
>> Client.transaction do
?> Client.create(:name => 'Elena')
>> raise ActiveRecord::Rollback
>> end
>> end
=> nil
>> Client.all.map(&:name)
=> ["Pavel", "Elena"] # instead of []
2.
>> Client.transaction do
?> Client.create(:name => 'Pavel')
>> Client.transaction(:requires_new => true) do
?> Client.create(:name => 'Elena')
>> raise ActiveRecord::Rollback
>> end
>> end
=> nil
>> Client.all.map(&:name)
=> ["Pavel", "Elena"] # instead of ["Pavel"]
Благодарю.
Debian GNU / Linux 5.0.6;
Рубин 1.9.2;
Ruby on Rails 3.0.1;
SQLite 3.7.3.