update_attributes没有在rails上给出错误Ruby

时间:2016-02-29 14:39:13

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

我有以下代码

if  user.update_attributes(user_params)
    render json: user , status: "success"
else
    render json: user.errors , status: "failed"
end

如果对象正确,它会更新值。但是,让我们说电子邮件是重复的,然后它不会进入else条件。而是抛出异常。

  

ActiveRecord :: RecordNotUnique(Mysql2 ::错误:重复条目   ' test@test.lo'

但我认为。它应该是一种我可以得到的东西user.errors.full_messages

我使用以下

尝试了它
if  User.new(user_params).valid?
user.update_attributes(user_params)
    render json: user , status: "success"
else
    render json: user.errors , status: "failed"
end

它进入else条件,但user.errors.messages等于{}

1 个答案:

答案 0 :(得分:4)

您需要依赖模型级验证:

validates :email, uniqueness: true

如果您依赖数据库级约束进行验证,那么您将在写入时获得异常。您可以捕获这些异常并尝试将它们转换为人类可读的错误消息,但这并不是Rails的工作方式。

如果您需要验证错误消息,请在模型中使用验证器。