1

rails-apigemを使用して単純なJSONAPIを構築しています。

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

password_digestのエラーメッセージを非表示にすることはできますか?コントローラでrespond_withを使用して@userオブジェクトを返します。

私は次のことを試しましたが、運がありません(「空白にすることはできません」というエラーを複製するだけです)。

validates :password_digest, presence: false
4

2 に答える 2

5

@freemanoid:コードを試しましたが、機能しませんでした。しかし、それは私にいくつかのヒントを与えました。ありがとう!これは私のために働いたものです:

models / user.rb

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

このメッセージは、ユーザーモデルのjsonハンドラーで手動で削除できます。のようなSmth:

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