Dapatkah seseorang memberi tahu saya jika saya melakukan penyiapan dengan cara yang salah?
Saya memiliki model berikut yang memiliki asosiasi 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
Saya menggunakan Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0, dan rspec. Berikut adalah pemeriksaan kewarasan rspec rspec dasar saya untuk :listing
pabrik:
it "creates a valid listing from factory" do
Factory(:listing).should be_valid
end
Berikut adalah Pabrik (: daftar)
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
Pabrik :listing_feature
dan :feature
pabriknya memiliki pengaturan yang sama.
Jika association :features
baris tersebut diberi komentar, maka semua tes saya lulus.
Saat itu
association :features, :factory => :feature
pesan kesalahan
undefined method 'each' for #<Feature>
yang menurut saya masuk akal bagi saya karena karena listing.features
mengembalikan array. Jadi saya mengubahnya menjadi
association :features, [:factory => :feature]
dan kesalahan yang saya dapatkan sekarang adalah ArgumentError: Not registered: features
Apakah tidak masuk akal untuk membuat objek pabrik dengan cara ini, atau apa yang saya lewatkan? Terima kasih banyak atas semua masukannya!