Как настроить фабрику в FactoryGirl с ассоциацией has_many

Может ли кто-нибудь сказать мне, если я просто неправильно настроен?

Я у следующих моделей есть ассоциации has_many.through:

class Listing < ActiveRecord::Base
  attr_accessible ... 

  has_many :listing_features
  has_many :features, :through => :listing_features

  validates_presence_of ...
  ...  
end


class Feature < ActiveRecord::Base
  attr_accessible ...

  validates_presence_of ...
  validates_uniqueness_of ...

  has_many :listing_features
  has_many :listings, :through => :listing_features
end


class ListingFeature < ActiveRecord::Base
  attr_accessible :feature_id, :listing_id

  belongs_to :feature  
  belongs_to :listing
end

Я использую Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0 и rspec. Вот моя базовая проверка работоспособности rspec rspec для фабрики : листинг :

it "creates a valid listing from factory" do
  Factory(:listing).should be_valid
end

Вот завод (: листинг)

FactoryGirl.define do
  factory :listing do
    headline    'headline'
    home_desc   'this is the home description'
    association :user, :factory => :user
    association :layout, :factory => :layout
    association :features, :factory => :feature
  end
end

: list_feature и : feature ] фабрики устроены аналогичным образом.
Если строка association: features закомментирована, то все мои тесты пройдены.
Когда он равен

association :features, :factory => :feature

, сообщение об ошибке неопределенный метод 'each' для # , который, как я думал, имеет для меня смысл, потому что, поскольку isting.features возвращает массив. Поэтому я изменил его на

association :features, [:factory => :feature]

и теперь получаю сообщение об ошибке ArgumentError: Не зарегистрировано: features Разве создание фабричных объектов таким способом неразумно, или что мне не хватает? Большое спасибо за любой ввод!

85
задан Jason Swett 14 September 2012 в 19:39
поделиться