Quelqu'un peut-il me dire si je ne fais que la configuration dans le mauvais sens?
J'ai les modèles suivants qui ont des associations 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
J'utilise Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0 et rspec. Voici mon contrôle de base rspec rspec sanity pour l' :listing
usine:
it "creates a valid listing from factory" do
Factory(:listing).should be_valid
end
Voici l'usine (: listing)
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
Les usines :listing_feature
et :feature
sont configurées de la même manière.
Si la association :features
ligne est commentée, tous mes tests réussissent.
Lorsqu'il est
association :features, :factory => :feature
le message d'erreur est
undefined method 'each' for #<Feature>
que je pensais avoir du sens pour moi car car listing.features
renvoie un tableau. Alors je l'ai changé en
association :features, [:factory => :feature]
et l'erreur que j'obtiens maintenant est ArgumentError: Not registered: features
N'est-il simplement pas judicieux de générer des objets d'usine de cette façon, ou que me manque-t-il? Merci beaucoup pour toute contribution!