标签: aasm

AASM:来自任何州的过渡?

我正在使用AASM.是否有可能从任何州过渡?例如:

aasm_event :publish do
  transitions :to => :publish, :from => ANY_STATE
end
Run Code Online (Sandbox Code Playgroud)

我知道可以传递一系列状态:from,但这不是我所追求的.我试过:from完全省略了,但是没有用.

ruby ruby-on-rails aasm ruby-on-rails-3

29
推荐指数
2
解决办法
6099
查看次数

state_machine vs aasm gems for app ruby​​ on rails 3.2

我需要一个状态机用于消息专用系统和订单状态系统.

你可以看到这两个宝石:

https://github.com/pluginaweek/state_machine

https://github.com/rubyist/aasm

编辑..

我正在使用mongoid和mongodb数据库

什么宝石最适合这个功能?

ruby-on-rails state-machine aasm ruby-on-rails-3 ruby-on-rails-3.1

9
推荐指数
1
解决办法
4165
查看次数

使用rubyist-aasm(作为状态机)在转换时保持状态列

使用aasm在转换时将对象的状态持久保存到数据库的最佳方法是什么?我原以为这会自动发生,但事实并非如此.

(编辑:当我手动保存对象时,状态列确实会更新.但是在转换时没有保存.)

我找不到这个插件的很多有用的文档,所以如果你有一个有更好的文档的替代有限状态机实现的建议,这可能也有帮助.

ruby-on-rails aasm acts-as-state-machine

8
推荐指数
2
解决办法
3215
查看次数

在Rails上验证有限状态机(使用AASM)

我正在使用Rubyist的AASM为AR对象构建一个4步向导.根据对象的状态,需要进行不同的验证.根据某个过渡的状态验证对象的最智能方法是什么?

ruby rubygems ruby-on-rails fsm aasm

8
推荐指数
1
解决办法
2223
查看次数

工作流程或AASM等宝石的最佳实践

我想知道你们如何在控制器中使用工作流程或AASM gem,如果你想更新所有属性,还需要工作流程/ AASM回调才能正常启动.

目前,我使用它像这样:

  class ModelController < ApplicationController
    def update
      @model = model.find(params[:id])

      if params[:application]['state'].present?
        if params[:application]['state'] == "published"
          @model.publish!
        end
      end
      if @model.update_attributes(params[:application]); ... end
    end
  end
Run Code Online (Sandbox Code Playgroud)

感觉不对,什么是更好的解决方案?

ruby-on-rails aasm ruby-on-rails-3

8
推荐指数
1
解决办法
3053
查看次数

AASM不使用我的rails 3和ruby 1.8.7(未定义的方法`name'代表nil:NilClass)

我正在使用Rails 3.2.2,使用aasm gem,我有这样的Document模型:

class Document < ActiveRecord::Base
  include AASM

  aasm do  
    state :unread, :initial => true
    state :read
    state :closed

    event :view do
      transitions :to => :read, :from => [:unread]
    end

    event :close do
      transitions :to => :closed, :from => [:read, :unread]
    end
  end
Run Code Online (Sandbox Code Playgroud)

现在在我的控制台上:

?  ? bundle exec rails c
Loading development environment (Rails 3.2.2)
irb(main):006:0> Document.create!(:title => 'test')
   (0.2ms)  BEGIN
  SQL (0.3ms)  INSERT INTO `documents` (`aasm_state`, `checklist_id`, `created_at`, `description`, `dir`, `planned_date`, `procedure_id`, `section`, `subsection`, `title`, `updated_at`) …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails aasm ruby-on-rails-3 ruby-1.8.7

8
推荐指数
1
解决办法
1943
查看次数

一个模型中有多个状态机?

我有一个代表注册过程的模型,需要跟踪几个过程的进展(背景检查,访谈,信息收集......).每个都可以由状态机表示,然后注册的总体状态可能取决于其他状态.

aasm可以处理这个吗?还有其他想法或设计考虑吗?

ruby-on-rails aasm

7
推荐指数
2
解决办法
1781
查看次数

添加验证到rails aasm state

state_machine我以前做过

state :cancelled do
  validates_presence_of :user
end
Run Code Online (Sandbox Code Playgroud)

如果用户不在,它会自动取消转换.

我们如何在aasm中为特定状态添加类似的验证?

ruby-on-rails aasm

7
推荐指数
1
解决办法
1681
查看次数

如何在AASM中建立州级警卫

有没有办法在任何情况下定义has_legs?在进入状态(例如running)之前检查的防护(例如)?

在所有可能的回调列表中,有事件和转换的保护,但不是事件.

我试图对模型进行条件验证.它在事件执行中起作用,但不适用于aasm方法(例如may_run?).

ruby-on-rails aasm

7
推荐指数
1
解决办法
144
查看次数

从AASM模型中获取状态/事件列表

我成功地将最新的AASM gem集成到一个应用程序中,使用它来创建向导.在我的情况下,我有一个模型订单

class Order < ActiveRecord::Base

  belongs_to :user
  has_one :billing_plan, :dependent => :destroy
  named_scope :with_user, ..... <snip>

  include AASM

  aasm_column :aasm_state
  aasm_initial_state :unauthenticated_user

  aasm_state :unauthenticated_user, :after_exit => [:set_state_completed]
  aasm_state : <snip>

  <and following the event definitions>

end
Run Code Online (Sandbox Code Playgroud)

现在我想让管理员通过AASM状态创建自己的图表.因此,我创建了另外两个名为OrderFlow和Transition的模型,其中order_flow有许多转换,订单为belongs_to order_flow.

到目前为止没问题.现在我想让我的管理员可以动态地将现有的转换/事件添加到order_flow图.

现在的问题是,我没有找到任何可能从我的订单模型中获取所有事件/转换的列表.aasm_states_for_select似乎是正确的候选人,但我不能在我的订单模型上调用它.

有人可以帮忙吗?

Thx提前.J.

ruby-on-rails state-machine aasm

6
推荐指数
2
解决办法
4969
查看次数