我正在使用 AASM 来管理用户模型中的状态。
我想通过编辑操作更改状态。
为此,我正在使用表单中User.aasm_states_for_select的方法以填充状态的选择输入。当我点击按钮提交时,所有更改都会保存,包括州名。但是不调用该状态的 AASM 事件,它是发生是因为只有字段状态已更改和事件方法没有被召唤。
有人能解决我的问题吗?
不幸的是,唯一的解决方案是从状态名称中查找事件并直接应用它。类似的东西
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]
STATE_MAPPING[state]
end
def permitted_attributes
@params.require(:user).permit #attributes without state
end
太多的喧嚣tbh,但据我所知,没有其他可用的解决方案