通过编辑操作更改AASM状态

时间:2017-11-08 10:07:19

标签: ruby-on-rails ruby ruby-on-rails-4 aasm

我使用AASM管理用户模型中的状态。

我想通过编辑操作更改状态。

要做到这一点,我在表单中使用User.aasm_states_for_select方法 填充状态的选择输入。 当我按下按钮时,保存所有更改,包括 州名。但该状态的AASM事件未被调用,它是 发生因为只有字段状态已更改和事件方法 没有被称为。

有没有人能解决我的问题?

1 个答案:

答案 0 :(得分:3)

不幸的是,唯一的解决方案是从州名中查找事件并直接应用它。像

这样的东西
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

太多的喧嚣,但据我所知,没有其他解决方案