1
私は2つの工場があります - ユーザと会社。CanCan + Factory_Girl - 奇妙な動作
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
次に、工場から会社を作成すると、すべて完璧です。データベースに保存してユーザーに関連付けます。クールですが、私がユーザーの能力をテストしようとすると、すべてのテストが失敗します。
の例では、(レールコンソール)があります:
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: "[email protected]", ..., role: "customer">
そして
Ability.new(User.find(1))
=> #<Ability:0xcf6771c> ...
私は混乱しています。何か案は?
あなたは完全に正しいです。私は私の会社を製品に関連付けることを忘れていました。ありがとう! – user1337413