我有以下代码
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
等于{}
答案 0 :(得分:4)
您需要依赖模型级验证:
validates :email, uniqueness: true
如果您依赖数据库级约束进行验证,那么您将在写入时获得异常。您可以捕获这些异常并尝试将它们转换为人类可读的错误消息,但这并不是Rails的工作方式。
如果您需要验证错误消息,请在模型中使用验证器。