在JSON输出中隐藏password_digest错误消息

时间:2013-01-29 15:01:29

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

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

模型/ 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)"
      ]
   }
}

是否可以隐藏password_digest的错误消息?我正在控制器中使用respond_with返回@user对象。

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

validates :password_digest, presence: false

2 个答案:

答案 0 :(得分:5)

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

models / user.rb

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

答案 1 :(得分:1)

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

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