2011-06-17 5 views
0

でattr_accessorにアクセスすることができますフィールドは、私はattr_accessorを宣言したレール3

なぜですか?

EDIT:attr_accessibleを行うには

class User < ActiveRecord::Base 
    attr_accessor :password 

    attr_accessible :name, :email, :password 

    validates :name, :presence => true, :uniqueness => true 
    validates :email, :presence => true 
    validates :password, :presence => true, :length => { :minimum => 6 }, :if => (password.present? or hashed_password.blank?) 

    before_save :encrypt_password 



    def encrypt_password 
     if password.present? 
     self.salt = BCrypt::Engine.generate_salt 
     self.hashed_password = BCrypt::Engine.hash_secret(password, salt) 
     end 
    end 

end 
+0

は同様に 'accessible'それはありますか?あなたのモデルを表示してください – apneadiving

+0

attr_accessible:name、:email、:password – gilsilas

+0

ActiveRecordモデルで 'attr_accessor'を使用しても属性が作成されません。あなたのデータベースに 'password'カラムがありますか? – coreyward

答えて

4

何もない - ここでの問題は、あなたがvalidatesクラスメソッドのクラスのコンテキストでpasswordを呼んでいる、そしてそれはそこに定義されていないということです。あなたはRailsがに検証されているインスタンス渡しますラムダ提供する必要が

:if => lambda { |u| u.password.present? or u.hashed_password.blank? } 
+1

まあ、よく見えますよ! – apneadiving

関連する問題