Module: ActiveRecord::Turntable::ActiveRecordExt::Transactions
- Defined in:
- lib/active_record/turntable/active_record_ext/transactions.rb
Instance Method Summary collapse
Instance Method Details
#add_to_transaction ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/active_record/turntable/active_record_ext/transactions.rb', line 33 def add_to_transaction if self.class.turntable_enabled? if self.turntable_shard.connection.add_transaction_record(self) remember_transaction_record_state end else super end end |
#with_transaction_returning_status ⇒ Object
Note:
Override to start transaction on current shard
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_record/turntable/active_record_ext/transactions.rb', line 5 def with_transaction_returning_status if self.class.turntable_enabled? status = nil if self.new_record? and self.turntable_shard_key.to_s == self.class.primary_key and self.id.nil? and self.class.connection.prefetch_primary_key?(self.class.table_name) self.id = self.class.connection.next_sequence_value(self.class.sequence_name) end self.class.connection.shards_transaction([self.turntable_shard]) do add_to_transaction begin status = yield rescue ActiveRecord::Rollback if Util.ar42_or_later? clear_transaction_record_state else @_start_transaction_state[:level] = (@_start_transaction_state[:level] || 0) - 1 end status = nil end raise ActiveRecord::Rollback unless status end status else super end end |