0

私はこの工場を持っています

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>

任意の助けをいただければ幸いです

4

3 に答える 3

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
于 2012-07-05T14:02:25.237 に答える
1

ユーザーごとに 1 つの会社を持ちたい場合belongs_to :companyは、has_many の代わりにユーザー モデルで使用する必要があります。ユーザーごとに多くの会社が本当に必要な場合は、この回答を参照してください

于 2012-07-05T13:57:36.200 に答える
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
于 2012-07-05T13:59:49.887 に答える