2017-10-28 127 views
1

我有一個ActiveRecord模型。我想在初始化時根據其屬性設置初始狀態。這是我的情況:用aasm寶石動態設置初始狀態

self.expected_delivery_date.blank? ? :in_preparation : :waiting 

有沒有辦法做到這一點?這是一個壞主意嗎?

回答

0

你可以定義一個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 

這似乎是合理的,我;您可以給出最常用的初始狀態initial: true選項,然後使用aasm_ensure_initial_state中的邏輯設置不常見的初始狀態。