Kann mir jemand sagen, ob ich das Setup nur falsch mache?
Ich habe die folgenden Modelle, die has_many.through Assoziationen haben:
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
Ich verwende Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0 und rspec. Hier ist meine grundlegende Überprüfung der Rspec Rspec-Gesundheit für die :listing
Fabrik:
it "creates a valid listing from factory" do
Factory(:listing).should be_valid
end
Hier ist Fabrik (: Auflistung)
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
Die :listing_feature
und :feature
Fabriken sind ähnlich eingerichtet.
Wenn die association :features
Zeile auskommentiert ist, bestehen alle meine Tests.
Wann ist es
association :features, :factory => :feature
Die Fehlermeldung ist
undefined method 'each' for #<Feature>
meiner Meinung nach sinnvoll, weil weil listing.features
ein Array zurückgegeben wird. Also habe ich es geändert in
association :features, [:factory => :feature]
und der Fehler, den ich jetzt bekomme, ist: ArgumentError: Not registered: features
Ist es einfach nicht sinnvoll, Fabrikobjekte auf diese Weise zu generieren, oder was fehlt mir? Vielen Dank für jede Eingabe!