2013-01-23 2 views
0

두 모델 사이에 하나의 관계가 있습니다. 관계가 작동하지만 문제는 내가 shoulda matcher와 함께 Rspec 테스트를 작성할 때 오류가 반환된다는 것입니다. user.rb레일즈가 하나의 Rspec 테스트를 통해 알 수 있습니다. Unitialized Constant

has_one :userresetpassword 

에서

Failure/Error: it { should have_one(:userresetpassword)} 
NameError: 
    uninitialized constant User::Userresetpassword 

내 코드 내 RSpec에 테스트

describe "associations" do 
    it { should have_one(:userresetpassword)} 
end 

답변

2

귀하의 관계는 잘못이라는 이름을 하나 레일 했어야-매처 (matcher) 또는 둘 모두가 힘든 시간을 보내고있다 그것으로부터 클래스 이름을 추측한다.

두 가지 선택 사항이 있습니다.

has_one :user_reset_password

이것은 레일이 제대로 UserResetPassword

두 번째 클래스 이름을 추측 할 수 있습니다 단순히 추측을 제거하고 레일에게 무엇 클래스 이름을 말할 수 첫째, 및 바람직한 것은 기존의로 협회 이름을 변경하는 것입니다 입니다. 이는 연관 이름을 변경하고 싶지 않거나 많이 변경하지 않는 경우에만 바람직합니다.

has_one :userresetpassword, :class_name => "UserResetPassword"

+0

는'spec_helper''이 사양 파일에 '이 필요합니다. 간결함을 위해 생략했습니다. – jason328

+0

그때 shoulda 나 rails는 당신의 의도 된 클래스 이름이 무엇인지 확실치 않습니다. 협회의 클래스 이름은 무엇입니까? 연결 이름은'Userresetpassword'임을 나타냅니다. –

+0

닫기,'UserResetPassword'입니다. – jason328