2014-06-09 19 views
3

我有兩種具有圓形關係的模型。如何在Factory Girl中對這些模型進行建模?具有圓形關係的鐵軌工廠女孩

我收到太多的錯誤消息,試圖做到這一點。

型號:

class Account < ActiveRecord::Base 
    has_many :users 
    belongs_to :owner, class_name: "User", inverse_of: :account 
end 

class User < ActiveRecord::Base 
    belongs_to :account 
end 

工廠:

FactoryGirl.define do 
    factory :user, aliases: [:owner] do 
    sequence(:email) { |n| "user#{n}@example.com" } 
    password "test" 
    password_confirmation "test" 
    account 
    end 
end 

FactoryGirl.define do 
    factory :account do |account| 
    account.name "My School" 
    account.short_name "school1" 
    account.sequence(:subdomain) { |n| "school#{n}" } 
    account.owner { FactoryGirl.build(:user, account: account) } 
    end 
end 

我得到以下錯誤:

Failure/Error: let!(:user) { FactoryGirl.create(:user) } 
NoMethodError: 
    undefined method `primary_key' for #<FactoryGirl::Declaration::Implicit:0x00000007bd9050> 
# ./spec/factories/accounts.rb:8:in `block (3 levels) in <top (required)>' 
# ./spec/models/user_spec.rb:8:in `block (3 levels) in <top (required)>' 
# -e:1:in `<main>' 

你能與此錯誤幫助嗎?

回答

0

試試這個

FactoryGirl.define do 
    factory :user do 
    sequence(:email) { |n| "user#{n}@example.com" } 
    password "test" 
    password_confirmation "test" 
    association :account 
    end 
end 

FactoryGirl.define do 
    factory :account do 
    name "My School" 
    short_name "school1" 
    sequence(:subdomain) { |n| "school#{n}" } 
    association :owner, factory: :user 
    end 
end 
+0

我得到堆棧太深錯誤:'故障/錯誤:無法從回溯SystemStackError找到匹配的行:堆棧層次過deep' – Derick

+0

衛生署! - 更新的答案,缺少':'關聯':所有者,工廠::用戶' – house9

+0

是的。我在測試之前添加了 – Derick