添加验证到rails aasm state

Raz*_*Raz 7 ruby-on-rails aasm

state_machine我以前做过

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

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

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

eug*_*bin 6

我可以提供2种选择:

首先:

validates_presence_of :sex, :name, :surname, if: -> { state == 'personal' }
Run Code Online (Sandbox Code Playgroud)

第二

event :fill_personal do
  before do
    instance_eval do
      validates_presence_of :sex, :name, :surname
    end
  end
  transitions from: :empty, to: :personal
end
Run Code Online (Sandbox Code Playgroud)