Ruby on rails 5 使用aasm gem动态设置初始状态
我有一个ActiveRecord模型。我想根据初始化时的属性设置初始状态。以下是我的情况:Ruby on rails 5 使用aasm gem动态设置初始状态,ruby-on-rails-5,rails-activerecord,state-machine,aasm,Ruby On Rails 5,Rails Activerecord,State Machine,Aasm,我有一个ActiveRecord模型。我想根据初始化时的属性设置初始状态。以下是我的情况: self.expected_delivery_date.blank? ? :in_preparation : :waiting 有办法吗?这是个坏主意吗?您可以定义一个aasm钩子方法并在那里设置状态: class User < ActiveRecord::Base include AASM aasm do state :submitted, initial: true s
self.expected_delivery_date.blank? ? :in_preparation : :waiting
有办法吗?这是个坏主意吗?您可以定义一个aasm钩子方法并在那里设置状态:
class User < ActiveRecord::Base
include AASM
aasm do
state :submitted, initial: true
state :started
end
def aasm_ensure_initial_state
self.aasm_state = :started
end
end
class用户
这对我来说似乎是合理的;您可以为最常见的初始状态指定initial:true
选项,然后使用aasm\u sure\u initial\u state
中的逻辑来设置不太常见的初始状态。状态aProc
,因此,是的,您可以这样做
initial_state lambda { |your_model|
your_model.expected_delivery_date.blank? ? :in_preparation : :waiting
}
请参阅更多示例。如果不在创建后的
中使用它,您将如何使用aasm\u确保初始状态
?