2012-02-10 9 views
0

なぜ私が既存のユーザを取得して電子メールを更新しようとする度に、ルビはそのパスワードを要求する例外をスローします。update User attr、rubyがパスワードを要求しています

誰でも同じ問題がありますか?

UserModel

attr_accessible :nome, :sobrenome, :email, :email_confirmation, :password, :password_confirmation, :genero, 
        :endereco, :numero, :bairro, :complemento, :cidade, :estado, :cep 



    has_secure_password 

    before_create {generate_token(:auth_token)} 

    attr_accessor :password 
email_regex = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i 



    validates_presence_of :nome, :sobrenome, :genero, :email, :password, :on => :create 


    validates :email, :format => {:with => email_regex}, 
        :uniqueness => {:case_sensitive => false } 


    validates :password, :length => {:within=> 6..60}, 
         :confirmation => true 


    validates :email, :confirmation => true, 
        :on => :update 
+0

どの例外がありますか? – lucapette

+0

パスワードの長さ。 – dcalixto

+0

パスワードの長さは例外ではありません。質問にスタックトレースを追加してください。このように間違っていることを理解することは難しいです。 – lucapette

答えて

1

ここで私はこの問題をどのように処理したのですか。

validates_presence_of :password, :on => :create 

validates :password, :length => {:within=> 6..60}, 
         :confirmation => true, 
         :if => :is_password_validation_needed? 

private 

     def is_password_validation_needed? 
     new_record? || password 
     end 
+0

それでは、作成時に検証する必要はありません。 – apneadiving

+0

まだ必要ですが、パスワードを要求している他のフィールドを更新するときにはなぜですか?作成と更新時に存在を示すことさえも毎回要求していました。 – dcalixto

1

あなたは明示的にアップデートのパスワードを要求:

validates :password, 
      :presence => true, 
      :on => :update, 

はあなたのルールはよく書かれていません。ここでいくつかのアドバイスを取る:http://railscasts.com/episodes/250-authentication-from-scratch

+0

答えませんでしたか? – apneadiving

+0

ありがとうございましたが、その場合はメソッドを作成しなければなりませんでした。 – dcalixto

関連する問題