Хтось може сказати мені, чи я просто йду з налаштуваннями неправильно?
У мене є такі моделі, які мають 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 на :listing
заводі:
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
:listing_feature
І :feature
заводи так само установка.
Якщо association :features
рядок коментується, тоді всі мої тести проходять.
Коли воно є
association :features, :factory => :feature
повідомлення про помилку - це те,
undefined method 'each' for #<Feature>
що, на мою думку, для мене має сенс, оскільки listing.features
повертає масив. Тож я змінив його на
association :features, [:factory => :feature]
і помилка, яку я отримую зараз, полягає в тому, ArgumentError: Not registered: features
чи просто не є розумним генерувати заводські об’єкти таким чином, або чого мені не вистачає? Щиро дякуємо за будь-які вклади!