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

QueXuQ · 2014年03月01日 · 最后由 liwei78 回复于 2014年03月01日 · 1670 次阅读

我做一个 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 里。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号