我正在使用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
答案 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