工厂女孩协会不工作

时间:2013-11-03 18:09:03

标签: ruby-on-rails factory-bot

我在FactoryGirl中设置了一个非常简单的关联,但由于某些原因它无法正常工作。该应用程序适用于旅游公司,因此每个旅游都有一个目的地(我正在使用ActiveRecord,因此Tour模型belongs_toDestination - 所有旅游都需要此关联) 。所以我建立了这样的工厂:

# spec/factories.rb
FactoryGirl.define do

  factory :destination do
    name "Example Destination"
    city "Example City"
    state "CA"
  end

  factory :tour do
    departure_date { 1.day.from_now }
    return_date { 1.day.from_now }
    destination
  end
end

然而,当我致电FactoryGirl.attributes_for(:tour)时,它会返回:

{:departure_date => Mon, 04 Nov 2013 17:51:26 UTC +00:00,
 :return_date    => Mon, 04 Nov 2013 17:51:26 UTC +00:00}

destination_id!为什么呢?

destination工厂工作正常。

我尝试用旧方式association :destination, factory: :destination定义关联,但这没有帮助。如果我手动将destination_id定义为destination_id FactoryGirl.create(:destination).id,我可以让它工作,但我不应该这样做。知道为什么它不起作用吗?

2 个答案:

答案 0 :(得分:4)

attributes_for不会加载关联的对象。它只为您请求的对象生成属性。

要让其加载关联的destination,请改为使用buildcreate

答案 1 :(得分:1)

attributes_for不会创建关联属性(我相信设计)。这应该有效:

FactoryGirl.attributes_for(:tour, :destination_attributes => FactoryGirl.attributes_for(:destination))

但是,这可能是一个更光滑的解决方案:

https://stackoverflow.com/a/10294322/632735

:)