Может ли кто-нибудь сказать мне, если я просто неправильно настроен?
Я у следующих моделей есть ассоциации 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
Разве создание фабричных объектов таким способом неразумно, или что мне не хватает? Большое спасибо за любой ввод!