创建和实例后立即回调

问题描述

所以我第一次使用 aasm gem 并模拟信用卡交易。

初始状态为“待处理”,我需要一个回调,在创建交易后立即检查交易金额是否大于限制。如果较低,则从挂起转换为已支付,如果不是,则从挂起转换为失败。

转换时使用 after_transaction 回调对吗?在这里行不通。我需要一个回调,在创建对象后立即调用方法“approve_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

解决方法

我会尝试使用活动记录回调(例如,after_create)来调用 approve_transaction

here's the api