2013-10-18 2 views
0

을 상속 모델에 연결하는 FactoryGirl 공장 정의 :는 사람이 건너했습니다

모델 :

나는 이런 식으로 뭔가가

class User < ActiveRecord::Base 

    authenticates_with_sorcery! 

    attr_accessible :forename, :surname, :email, :password, :password_confirmation 
... 
end 

class Manager < User 
    has_many :things_to_manage 

... 
end 

class ThingsToManage < ActiveRecord::Base 
    attr_accessible :stuff, :more_stuff 

    belongs_to :manager 

... 
end 

을 그리고 난을 설정하려면 FactoryGirl.create (: things_to_manage)는 Manager (사용자로부터 상속받은)를 사용하여 ThingsToManager 모델 (데이터베이스에 유지됨)을 만듭니다.

내 공장

FactoryGirl.define do 
    factory :user do 
     forename 'Test' 
     surname 'User' 
     sequence(:email) {|n| "#{forename}.#{surname}#{n}@test.com".downcase} 
     password '[email protected]@' 
     end 
end 

FactoryGirl.define do 
    factory :manager do 

    end 
end 

FactoryGirl.define do 
    factory :things_to_manage do 

    stuff "rhubarb rhubarb" 
    more_stuff "la la la" 
    association :manager, :factory => :user 

    end 
end 

association :manager, :factory => :user이 작동하지 않습니다. 관리자 (# 70275174714940) 예상 ,있어 사용자 (# 70275151319360)

어떤 아이디어 : 나는

액티브 :: AssociationTypeMismatch를 얻을?

+0

당신이 "유형"필드에서 제대로 단일 테이블 상속을 사용하고 있습니까? –

+0

안녕하세요. Beerlington - 확실하지 않습니다. 내게 맞았습니다. 설명해 주시겠습니까? –

답변

0

당신이 당신의 매니저 팩토리를 변경 시도 할 수 this answer에 따라 경찰 :

FactoryGirl.define do 
    factory :manager, class: Manager, :parent => :user do 

    end 
end 

그리고 당신의 things_to_manage 공장 :

FactoryGirl.define do 
    factory :things_to_manage do 

    stuff "rhubarb rhubarb" 
    more_stuff "la la la" 
    manager 

    end 
end 
+0

정보 주셔서 고마워,하지만이 일을 할 때 오류가 발생합니다 (정의되지 않은 메서드'password_attribute_name 'nil : NilClass). 그래서 공장에서 User 모델에 대한 메소드를 호출하려고합니다. 어쩌면 생성 전에 사용자를 만들고이트를 ThingsToManage 모델과 연관시키는 방법이 있을까요? –

관련 문제