1

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

模型/用户.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
4

2 回答 2

5

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

模型/用户.rb

after_validation { self.errors.messages.delete(:password_digest) }
于 2013-02-14T12:04:34.263 回答
1

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

class User < ActiveRecord::Base
  def as_json(options = {})
    self.errors.messages.delete('password_digest')
    super(options)
  end
end
于 2013-02-13T14:47:28.423 回答