Cim*_*imm 6 state ruby-on-rails state-machine aasm
我正在使用rubyist-aasm状态机来处理我的Event对象中的不同状态(事件初始化,事件讨论,事件发布等).我添加了防护装置,以防止在某些条件得不到满足时改变状态.
这一切都很好但是当状态变化被警卫拒绝时它没有显示任何错误.知道如何才能看到状态并没有改变?我可以手动检查状态,但这听起来像一个丑陋的解决方案.
aasm_state :firststate
aasm_state :secondstate
aasm_event :approve do
transitions :to => :secondstate, :from => [:firststate], :guard => :has_a_price?
end
def has_a_price?
self.price.present?
end
Run Code Online (Sandbox Code Playgroud)
我知道在 rubyist-aasm 2.0.2 中你可以调用 add '!' 如果转换失败,转换方法调用将返回 false。假设您有一个名为approve的控制器方法:
def approve
@event = Event.find params[:id]
if @event.approve!
# transition occurred
else
# handle the failed transition (flash or errors)
end
end
Run Code Online (Sandbox Code Playgroud)
让我知道你的想法?
| 归档时间: |
|
| 查看次数: |
4235 次 |
| 最近记录: |