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_transactionObject



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_statusObject

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