【问题标题】:Hide password_digest error message in JSON output在 JSON 输出中隐藏 password_digest 错误消息
【发布时间】:2013-01-29 15:01:29
【问题描述】:

我正在使用 rails-api gem 构建一个简单的 JSON API。

models/user.rb:

class User < ActiveRecord::Base
  has_secure_password
  attr_accessible :email, :password, :password_confirmation

  validates :email, presence: true, uniqueness: { case_sensitive: false }, format: { with: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i }
  validates :password, presence: { on: :create }, length: { minimum: 6 }
end

当我尝试在没有密码的情况下注册时,这是我得到的 JSON 输出:

{
  "errors": {
      "password_digest": [
          "can't be blank"
      ],
      "password": [
          "can't be blank",
          "is too short (minimum is 6 characters)"
      ]
   }
}

是否可以隐藏密码摘要的错误消息?我正在控制器中返回带有 respond_with 的 @user 对象。

我尝试了以下但没有运气(它只是重复错误“不能为空白”):

validates :password_digest, presence: false

【问题讨论】:

  • 也许可以尝试“验证 :password_digest, :allow_blank => true”
  • 谢谢,但它不起作用。它说我必须至少指定一个验证规则。
  • 验证:密码,存在:{ on: :create },长度:{ minimum: 6, allow_blank: true }
  • @Jean-Paul:它不会隐藏 password_digest 的验证消息。

标签: ruby-on-rails json validation rails-api


【解决方案1】:

@freemanoid:我试过你的代码,但没有用。但它给了我一些提示。谢谢!这对我有用:

models/user.rb

after_validation { self.errors.messages.delete(:password_digest) }

【讨论】:

    【解决方案2】:

    您可以在用户模型的 json 处理程序中手动删除此消息。喜欢:

    class User < ActiveRecord::Base
      def as_json(options = {})
        self.errors.messages.delete('password_digest')
        super(options)
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多