新手问题 如何从事务中,获取错误信息?

QueXuQ · March 01, 2014 · Last by liwei78 replied at March 01, 2014 · 1663 hits

我做一个 api 接口,因为涉及事务,所以我设计是这样的: controller

def update
  if @user.update_and_set_user_order(user_params)
    render json: @user
  else
    render json: { errors: @user.errors }, status: :unprocessable_entity
  end
end

model:

def update_and_set_user_order user_params
  begin
    transaction do
      self.update!(user_params)
      ...
      self.user_order.save!
    end
  rescue
    false
  end
end

因为上面我捕获了异常,而在事务里,必须出现异常,事务才会启动。可是由于捕获了异常,所以我获取不到 errors 信息,不知道上面应该怎么修改比较优雅的解决这个问题呢?

rescue 你可以捕捉报错,然后看看报错里面是否有 error 信息?

或者内部包装一个 error,然后抛出来,丢给 resue 处理。

异常信息格式化后放到 self.errors 里。

You need to Sign in before reply, if you don't have an account, please Sign up first.