2012-12-20 3 views
1
영향을주지 않는
class User < ActiveRecord::Base 
    attr_accessible :username, :password 
    attr_accessor :username, :password 

    validates :username, :presence => true, :uniqueness => true 
    validates :password, :presence => true 
end 

테스트 :고유성 제약 분야

it "prevents username duplication" do 
    FactoryGirl.create(:user, username: 'ted').should be_valid 
    FactoryGirl.build(:user, username: 'ted').should_not be_valid 
    end 

내가 User.count() 내가 고유성 제약 조건 실종 무엇 2. 있음을 확인했습니다?

+2

먼저 테스트가 실패합니까? 'FactoryGirl.build'는 모델을 만들지 않고 그냥 메모리에 빌드합니다. 'User.count == 2'를 얻는다면, 당신은 이미 다른 비 관련 사용자를 데이터베이스에 가지고있을 것입니다. 이것을 확인할 수 있습니까? – PinnyM

+0

@ PinnyM의 관점 - 아마도 사용자 레코드를 생성하고있는 스펙의'before (: each) '또는'before (: all)'부분에서'2 '의 결과가 발생했을 것입니다. – jefflunt

+0

생성하려면 전환하면 사용자 수가 2가됩니다. 미안하지만 레코드를 올바르게 저장하면 2가됩니다. 유효성 검사는 두 번째 빌드 모델에 영향을 주나요? 그럼에도 불구하고 사용자 객체를 생성하는 컨트롤러는 고유하지 않은 사용자 이름에 관계없이 사용자를 확실히 생성합니다. –

답변

0

attr_accessor가 모델을 중단시킵니다. 그 줄을 제거하십시오.