Ruby on rails 轨道原子吸收光谱法;如果发生特定转换,如何执行某些操作
我使用在rails上调用的状态机gem 有一个事件具有两种类型的转换 三种状态Ruby on rails 轨道原子吸收光谱法;如果发生特定转换,如何执行某些操作,ruby-on-rails,aasm,Ruby On Rails,Aasm,我使用在rails上调用的状态机gem 有一个事件具有两种类型的转换 三种状态 state pending state past_due state paid pending可以更改为paid 过期可以更改为已付 event :pay do transitions from: [:pending, :past_due], to: :paid end 因此,只有当过期变成付费时,我才愿意采取一些行动 有什么想法吗?一种方法是在两个单独的语句中定义转换: event :pay
state pending
state past_due
state paid
pending
可以更改为paid
过期
可以更改为已付
event :pay do
transitions from: [:pending, :past_due], to: :paid
end
因此,只有当过期
变成付费
时,我才愿意采取一些行动
有什么想法吗?一种方法是在两个单独的语句中定义转换:
event :pay do
transitions from: :pending, to: :paid
transitions from: :past_due, to: :paid, after: :do_your_custom_action
end
查看有关回调的更多信息。您可以将
后的回调附加到转换和事件
由于两次转换的事件相同,您应该将回调附加到从过期
到付费
的特定转换
当您在一个转换中覆盖两个流时,第一步是为这个流进行单独的转换并将回调附加到它。作为
transitions :from => :past_due, :to => :paid, :after => your_required_action
就我个人而言,我在
回调之后将一个块传递给
event :pay do
after do
# do_something
end
transitions from: [:pending, :past_due], to: :paid
end
通过这种方式,我可以确保在事件:pay
完成后执行dou\u something
另一种方法是将回调附加到转换
,在转换完成后将执行回调
请看一下这些文件和它的通话顺序,以满足您的需求