Обратный вызов AASM сразу после создания и экземпляра

поэтому я впервые использую драгоценный камень aasm и эмулирую транзакцию по кредитной карте.

Начальное состояние «Ожидание», и мне нужен обратный вызов, который сразу после создания транзакции проверяет, превышает ли сумма транзакции лимит. Если ниже, то переход из ожидающего в платный, а если нет, то из ожидающего в несостоявшийся.

Обратный вызов after_transaction используется при переходе, верно? Здесь это не сработает. Мне нужен обратный вызов, который вызывает метод append_transaction сразу после создания объекта.


aasm :column_name, column: 'status' do # default column: aasm_state
    state :pending, initial: true
    state :paid, :failed

    after

    event :fail do
      transitions from: :pending, to: :failed
    end

    event :approve do
      transitions from: :pending, to: :paid
    end

  def approve_transaction
    if limit_left
      approve
    else
      fail
    end
  end

  def limit_left
    remaining_limit = self.credit_card.limit - self.amount
    remaining_limit >= 0 ? true : false
  end


person patrickdarya    schedule 10.01.2021    source источник


Ответы (1)


Я бы попробовал использовать обратный вызов активной записи (например, after_create) для вызова approve_transaction

вот API

person obiruby    schedule 11.01.2021
comment
спасибо, отличная идея! - person patrickdarya; 11.01.2021