首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails AASM自动状态转换

Rails AASM自动状态转换
EN

Stack Overflow用户
提问于 2014-07-17 15:17:10
回答 1查看 1.9K关注 0票数 1

我正在开发一个Rails应用程序,它使用AASM gem将特定对象转换为不同的状态。

只有当“接受”的属性设置为false时,才需要具有“预批准”的初始状态。是否有一种使用AASM gem进行自动转换的方法?

以下是几个州:

代码语言:javascript
复制
  aasm column: :status do
    state :pre_approval, initial: true
    state :pending
    state :opened
    state :closed

    event :approved do
      transitions from: :pre_approval, to: :pending, guard: :approved_changed?
    end

    event :received, after: Proc.new { set_received_date } do
      transitions from: :pending, to: :opened
    end

    event :complete, after: Proc.new { set_completion_date } do
      transitions from: :opened, to: :closed
    end
  end
EN

回答 1

Stack Overflow用户

发布于 2015-08-18 15:16:31

在这里,您可以看到所有可能回调的列表,以及它们的调用顺序:

代码语言:javascript
复制
begin
  event           before
  event           guards
  transition      guards
  old_state       before_exit
  old_state       exit
  transition      after
  new_state       before_enter
  new_state       enter
  ...update state...
  event         success             # if persist successful
  old_state       after_exit
  new_state       after_enter
  event           after
rescue
  event           error
end

对于新状态有三个回调: before_enter、enter、after_enter,但没有guards.So --我认为如果要设置初始状态,当某些条件为真时,最好的方法是使用rails的before_create回调。

顺便说一句,我不认为aasm应该为state.Because添加保护状态--状态是特定的,而不是action.We只是可以添加回调进入或退出这个状态。

是否有一种使用AASM进行自动转换的方法?

不是,但您可以在aasm回调或rails回调中调用事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24807488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档