ใครช่วยบอกหน่อยได้ไหมว่าฉันแค่ตั้งค่าผิดวิธี
ฉันมีโมเดลต่อไปนี้ที่มี has_many ผ่านการเชื่อมโยง:
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
ฉันใช้ Rails 3.1.rc4, FactoryGirl 2.0.2, factory_girl_rails 1.1.0 และ rspec นี่คือการตรวจสอบคุณภาพ rspec rspec พื้นฐานของฉันสำหรับ:listing
โรงงาน:
it "creates a valid listing from factory" do
Factory(:listing).should be_valid
end
นี่คือโรงงาน (: รายชื่อ)
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
:listing_feature
และ:feature
โรงงานมีการติดตั้งในทำนองเดียวกัน
หากassociation :features
มีการแสดงความคิดเห็นในบรรทัดแสดงว่าการทดสอบทั้งหมดของฉันผ่าน
เมื่อเป็นเช่นนั้น
association :features, :factory => :feature
ข้อความแสดงข้อผิดพลาดคือ
undefined method 'each' for #<Feature>
สิ่งที่ฉันคิดว่าสมเหตุสมผลสำหรับฉันเพราะlisting.features
ส่งคืนอาร์เรย์ เลยเปลี่ยนเป็น
association :features, [:factory => :feature]
และข้อผิดพลาดที่ฉันได้รับตอนนี้ArgumentError: Not registered: features
คือมันไม่สมเหตุสมผลที่จะสร้างวัตถุโรงงานด้วยวิธีนี้หรือฉันพลาดอะไรไป? ขอบคุณมากสำหรับข้อมูลใด ๆ และทั้งหมด!