2

因此,我的项目中有多个模型,其中许多模型具有激活和停用功能,我使用 AASM 进行管理

aasm column: 'status' do
  state :active, :initial => true
  state :inactive

  event :deactivate do
    transitions :from => :active, :to => :inactive
  end

  event :activate do
    transitions :from => :inactive, :to => :active
  end
end

我想避免重复这段代码,它有 4 种不同的模型,我可能不会再向它们添加任何状态。

提前致谢

4

1 回答 1

4

您可以使用此部分创建模块并将其放入models/concerns/lib/文件夹(或其他地方,只需确保您已上传它):

  module ActivateDeactivateStatuses
    extend ActiveSupport::Concern

    included do
      aasm column: 'status' do
        state :active, :initial => true
        state :inactive

        event :deactivate do
          transitions :from => :active, :to => :inactive
        end

        event :activate do
          transitions :from => :inactive, :to => :active
        end
      end
    end
  end

在你的模型中:

  include ActivateDeactivateStatuses
于 2014-09-18T11:55:36.413 回答