2012-01-06 4 views
2

내 사용자 모델에서 has_secure_password를 사용하려고하지만 응용 프로그램에서 작동하는 동안 내 테스트가 모두 중단됨을 확인했습니다. 내가 그러나 때,has_secure_password를 사용하여 사용자 만들기

describe User do 
    before(:each) do 
     @attr = { :forename => "Captain", 
        :surname => "Hook", 
        :email => "[email protected]", 
        :password => "password", 
        :password_confirmation => "password" } 
    end 

    it "should create a new instance given valid attributes" do 
     User.create!(@attr) 
    end 
end 

이 작동하지 않습니다 단순히 내가 유효한 속성을 가진 새 사용자를 만들 수 있다는 것을 확인

class User < ActiveRecord::Base 
    has_secure_password 
    attr_accessible :email 

    validates :email, :presence => true, 
       :format => { :with => /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i }, 
       :uniqueness => { :case_sensitive => false } 
    validates :password, :presence => true 
end 

내 첫 번째 테스트 (RSpec에) : 나는 간단한 사용자 모델을 가지고

user = User.new(@attr); 
user.password = "password"; 
user.save 

잘 작동합니다. 이것은 has_secure_password가 password_digest의 생성을 처리하는 새로운 메서드 password를 추가하기 때문에 이것이라고 생각합니다. 이렇게 직접 호출하면 필요한 필드가 생성됩니다. User.create를 사용할 수 있지만이 메서드를 호출 할 수있는 방법이 있습니까?

답변

1

정말 간단했다. 비밀번호를 attr_accessible에 추가하지 않았으므로 User.create 또는 User.new으로 전화를 걸었습니다. 이메일 : 내가 코드를 만드는 데 필요한 유일한 수정은

attr_accessible :email, :password 
+3

'attr_accessible을했다 암호 : –

+3

을 password_confirmation' 어떻게 레일 4 당신이? Rails 4에는 더 이상 'attr_accessible'이 없기 때문에 묻습니다. –

+1

대신에'attr_accessor'를 사용해야합니다. –

관련 문제