使用aasm在转换时将对象的状态持久保存到数据库的最佳方法是什么?我原以为这会自动发生,但事实并非如此.
(编辑:当我手动保存对象时,状态列确实会更新.但是在转换时没有保存.)
我找不到这个插件的很多有用的文档,所以如果你有一个有更好的文档的替代有限状态机实现的建议,这可能也有帮助.
我在Rails 4应用程序中使用了aasm(以前称为acts_as_state_machine)gem。我的Post模特上有这样的东西
...
aasm column: :state do
state :pending_approval, initial: true
state :active
state :pending_removal
event :accept_approval, :after => Proc.new { |user| binding.pry } do
transitions from: :pending_approval, to: :active
end
end
...
Run Code Online (Sandbox Code Playgroud)
当我调用@post.accept_approval!(:active, current_user)并且触发after回调时,在我的控制台中,我可以检查什么user(已传递到Proc中)及其nil!
这里发生了什么?调用此转换的正确方法是什么?
ruby ruby-on-rails aasm acts-as-state-machine ruby-on-rails-4
我在rails中有一个现有模型,我想向它添加AASM状态.
根据我的理解,我应该首先通过迁移向我的数据库添加一个状态列,然后将一些状态添加到我的rails模型中.如何根据另一列中的值设置默认状态值?
我在正确的轨道上吗?
我希望能够利用自动生成的acts_as_state_machine转换方法(例如event!)..但我不希望它立即保存.我正在更新状态作为另一组操作的一部分,所以我不想做双重保存.
有没有办法在没有保存的情况下触发这些事件方法?