2017-11-08 10 views
1

私は、AASMを使用してユーザーモデルの状態を管理しています。編集アクションによるAASM状態の変更

ステータスを編集操作で変更したいとします。

これを行うには、私のフォームにUser.aasm_states_for_selectというメソッドを使用しています。 は、状態の選択入力を設定します。 私がボタンコミットを押すと、 州名を含むすべての変更が保存されます。しかし、その状態のAASMイベントは呼び出されません。フィールドのステータスのみが変更され、イベントメソッド が呼び出されていないため、 が発生しています。

誰かが私の問題の解決策を持っていますか?

答えて

2

残念ながら、唯一の解決策は州名からイベントを見つけて直接適用することです。私はこのためにstate_machine宝石を使用する必要がありますTBH

STATE_MAPPING = { 
    'state_name' => :event_name 
} 

#... 

def update 
    user.public_send(state_event) if state_event 
    user.update permitted_attributes 

    #... 
end 

# ... 

def state_event 
    state = params.require(:user).permit(:state) 
    STATE_MAPPING[state] 
end 

def permitted_attributes 
    @params.require(:user).permit #attributes without state 
end 

あまりにも多くのハッスルのようなものが、私の知る限り

+0

利用可能な他の解決策はありませんか? –

+0

@MihirKumarThakur私はアサムが良いと信じています。少なくとも私が取り組んでいたプロジェクトでは、 'state_machine'は' aasm'に置き換えられました。 –

関連する問題