使用FactoryGirl - Rails创建外部表标识符

时间:2014-04-14 16:43:06

标签: ruby-on-rails activerecord rails-activerecord factory-bot

我有两个型号,用户和答案。我想在FactoryGirl创建Answer中生成user_id。我该怎么做呢?

FactoryGirl.define do
  factory :user do
    name { Faker::Name.name }
    pasword { 'password' }
    password_confirmation { |u| u.password }
  end
end

以下是我到目前为止生成外部user_id(显然语法不正确)的原因:

FactoryGirl.define do
  factory :answer do
    description { Faker::Lorem.words }
    user_id = FactoryGirl.create(:user)::user_id
  end
end

2 个答案:

答案 0 :(得分:2)

鉴于关联answer belongs_to: :user,您可以在工厂定义中使用association帮助器:

FactoryGirl.define do
  factory :answer do
    description { Faker::Lorem.words }
    association :user
  end
end

然后用法:

u = FactoryGirl.create(:user)
answer = FactoryGirl.create(:answer, user: u)

答案 1 :(得分:0)

您可以执行以下操作:

FactoryGirl.define do
  factory :answer do
    description { Faker::Lorem.words }

    after(:build) do |answer, evaluator|
      answer.user = create(:user) unless answer.user
    end
  end
end

如果在创建答案时未提供用户,则会创建新用户。