Est-ce que quelqu'un peut me dire si je m'y prends simplement de la mauvaise façon pour la configuration ?
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
J'utilise Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0, et rspec. Voici mon test de régularité rspec de base pour la factory :listing
:
it "crée un listing valide à partir de la factory" do
Factory(:listing).should be_valid
Voici Factory(: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 factories :listing_feature
et :feature
sont configurées de manière similaire.
Si la ligne association :features
est commentée, alors tous mes tests passent.
Quand elle est :
association :features, :factory => :feature
le message d'erreur est undefined method 'each' for #
ce qui me semblait logique car listing.features
renvoie un tableau. Donc je l'ai changé en :
association :features, [:factory => :feature]
et maintenant j'obtiens l'erreur ArgumentError: Not registered: features
Est-ce simplement insensé de générer des objets de factory de cette manière, ou qu'est-ce que je manque ? Merci beaucoup pour toute suggestion !