我有这个工厂
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>
任何帮助将不胜感激
答案 0 :(得分: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
答案 1 :(得分:1)
如果您希望每个用户拥有1家公司,则需要在用户模型中使用belongs_to :company
而不是has_many。如果您真的希望每个用户拥有多家公司,see this answer。
答案 2 :(得分: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