Ai đó có thể cho tôi biết nếu tôi chỉ thiết lập sai cách không?
Tôi có các mô hình sau có liên kết 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
Tôi đang sử dụng Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0 và rspec. Đây là kiểm tra độ tỉnh táo rspec rspec cơ bản của tôi cho :listing
nhà máy:
it "creates a valid listing from factory" do
Factory(:listing).should be_valid
end
Đây là Nhà máy (: danh sách)
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
Các nhà máy :listing_feature
và :feature
nhà máy được thiết lập tương tự.
Nếu association :features
dòng được nhận xét ra, thì tất cả các bài kiểm tra của tôi đều vượt qua.
Khi nó là
association :features, :factory => :feature
thông báo lỗi
undefined method 'each' for #<Feature>
mà tôi nghĩ có ý nghĩa với tôi bởi vì listing.features
trả về một mảng. Vì vậy, tôi đã thay đổi nó thành
association :features, [:factory => :feature]
và lỗi tôi nhận được bây giờ là ArgumentError: Not registered: features
Có phải tôi không hợp lý khi tạo các đối tượng của nhà máy theo cách này, hay tôi đang thiếu cái gì? Cảm ơn rất nhiều cho bất kỳ và tất cả đầu vào!