1

私には2つの工場があります-ユーザーと会社です。

FactoryGirl.define do
  factory :user do
    sequence(:email) { |n| "user#{n}@exyzample.com" }
    password "secret"
    password_confirmation "secret"
  end

  factory :customer, :parent => :user do
    role "customer"
  end

  factory :company do
    name "User Company"
    association :user, :factory => :customer
  end
end

次に、工場から会社を作成すると、すべてが完璧になり、レコードがデータベースに保存され、ユーザーに関連付けられます。かっこいいですが、ユーザーの能力をテストしようとすると、すべてのテストが失敗します。

例があります(railsコンソール):

company = Factory(:company)
=> COMMIT
Ability.new(company.user)
=> Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

だが

company.user 
=> #<User id: 1, email: "user1@example.com", ..., role: "customer"> 

Ability.new(User.find(1))
=> #<Ability:0xcf6771c> ...

よくわかりません。何か案は?

4

1 に答える 1

2

ユーザーの初期化方法を教えてもらえますか?この問題は、ユーザーや企業のファクトリで関連付けを定義していないために発生していると思います

于 2012-04-17T01:09:52.867 に答える