поэтому я впервые использую драгоценный камень 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