【问题标题】:update_attributes not giving the errors Ruby on railsupdate_attributes 没有给出错误 Ruby on rails
【发布时间】:2016-02-29 22:42:03
【问题描述】:

我有以下代码

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

如果对象正确,它会更新值。但是假设电子邮件是重复的,那么它不会进入 else 条件。而是引发异常。

ActiveRecord::RecordNotUnique (Mysql2::Error: Duplicate entry '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 等于{}

【问题讨论】:

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


    【解决方案1】:

    您需要依赖模型级别的验证:

    validates :email, uniqueness: true
    

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

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

    【讨论】:

    • 太好了,现在这个答案在我脑海中清除了另一件事,即如果我们对 database 有任何异常。我们可以在 Models 中处理它。谢谢亲爱的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2017-06-15
    • 2014-04-17
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多