我正在开发一个Rails应用程序,它使用AASM gem将特定对象转换为不同的状态。
只有当“接受”的属性设置为false时,才需要具有“预批准”的初始状态。是否有一种使用AASM gem进行自动转换的方法?
以下是几个州:
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发布于 2015-08-18 15:16:31
在这里,您可以看到所有可能回调的列表,以及它们的调用顺序:
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回调中调用事件。
https://stackoverflow.com/questions/24807488
复制相似问题