2012-07-05 79 views
0

我有這個工廠我如何使用Factory Girl創建公司?

FactoryGirl.define do 
    factory :user do 
    email    { Faker::Internet.email } 
    first_name   { Faker::Name.first_name } 
    last_name   { Faker::Name.last_name } 
    password   { 'TarXlrOPfaokNOzls2U8' } 
    end 
end 

,直到我加入了協會審定

class User < ActiveRecord::Base 
    has_many :companies, :through => :positions 
    has_many :positions 
    validates_presence_of :company 

如何添加到我的工廠來實現這一

我想這

association :company, factory: :company, strategy: :build 
這真是棒極了

但我所有的測試都失敗

undefined method `company=' for #<User:0x007fcd7c13c260> 

任何幫助,將不勝感激

回答

3

您是否嘗試過簡單?

FactoryGirl.define do 
    factory :user do 
    email    { Faker::Internet.email } 
    first_name   { Faker::Name.first_name } 
    last_name   { Faker::Name.last_name } 
    password   { 'TarXlrOPfaokNOzls2U8' } 
    companies   { [Factory(:company, strategy: build)] } 
    end 
end 
+0

上寫入validates_existence_of的新方法(rails 3.2)awesome thanks .. – Trace 2012-07-05 14:17:40

1

如果你想有每個用戶1家公司,那麼你需要在用戶模型中使用belongs_to :company代替的has_many的。如果你真的想要每個用戶有很多公司,see this answer

+0

我知道,但我需要一個以上的公司....但我的驗證可以確保我有一個ATLEAST其實 – Trace 2012-07-05 14:41:25

+0

,除非你有一個COMPANY_ID屬性,您的驗證應該引發錯誤。 – 2012-07-05 14:52:44

+0

實際上,'validates_presence_of:company'是在關聯 – Trace 2012-07-05 15:14:36

0

你想爲公司,用戶和位置的工廠,比覆蓋在必要時默認設置:

factory :position do 
    user 
    company 
    end 
    factory :company do 
    #company stuff 
    end 

    user = create(:user) 
    company = create(:company) 
    postion = create(:position, user: user, company: company) 
    user.company.should eq company 
相關問題