首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AASM:保安回调的正确语法

AASM:保安回调的正确语法
EN

Stack Overflow用户
提问于 2011-10-27 19:48:04
回答 1查看 2K关注 0票数 0

下面是我的示例代码:

代码语言:javascript
复制
class Foo < ActiveRecord::Base
  include AASM
  aasm_column :status
  aasm_initial_state :start_state

  aasm_state :start_state
  aasm_state :state_two
  aasm_state :end_state

  aasm_event :move_to_two, :guard => :guard_callback, :after => :after_callback do
    transitions :from => :start_state, :to => :state_two
  end

  def guard_callback
    puts "executing guard callback..."
    false
  end

  def after_callback
    puts "executing after callback..."
  end

这是我的代码外观的一个玩具表示。我只是从guard回调中返回false,以测试不执行转换或后续转换的行为。下面是我在测试中调用的代码

代码语言:javascript
复制
foo = Foo.new
foo.move_to_two!
puts "foo's current status: #{foo.status}"

下面是输出

代码语言:javascript
复制
executing after callback...
foo's current status: state_two

注意守卫从来不会被叫到..。

我把守卫放错地方了吗?我是不是错了,返回false会停止转换?停止转换是否也会导致忽略after回调?或者,无论发生什么,它都会执行after?

如果最后一件事是真的,我如何将状态传递到回调中?

提前感谢,如果您需要更多信息,请让我知道...

jd

EN

回答 1

Stack Overflow用户

发布于 2011-10-27 20:07:00

好的,我弄明白了(整个“只要你问,你就会找到答案”的事情)...the :guard就像这样进行转换:

代码语言:javascript
复制
aasm_event :move_to_two, :after => :after_callback do
  transitions :from => :start_state, :to => :state_two, :guard => :guard_callback
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7915408

复制
相关文章

相似问题

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