Qualcuno può dirmi se sto eseguendo la configurazione nel modo sbagliato?
Ho i seguenti modelli che hanno associazioni 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
Sto usando Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0 e rspec. Ecco il mio controllo di integrità rspec rspec di base per la :listing
fabbrica:
it "creates a valid listing from factory" do
Factory(:listing).should be_valid
end
Ecco Factory (: listato)
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
Le fabbriche :listing_feature
e :feature
sono configurate in modo simile.
Se la association :features
riga è commentata, tutti i miei test vengono superati.
Quando è
association :features, :factory => :feature
il messaggio di errore è
undefined method 'each' for #<Feature>
che ho pensato avesse senso per me perché perché listing.features
restituisce un array. Quindi l'ho cambiato in
association :features, [:factory => :feature]
e l'errore che ricevo ora è ArgumentError: Not registered: features
Non è semplicemente sensato generare oggetti di fabbrica in questo modo, o cosa mi manca? Grazie mille per qualsiasi contributo!