फैक्ट्री गर्ल एसोसिएशन जो एक एसोसिएशन होने के लिए अपरिभाषित तरीका है - रूबी-ऑन-रेल, एसोसिएशन, फैक्ट्री-बॉट

मैं दो के साथ एक त्रुटि बनाने की कोशिश कर रहा हूँफैक्टरीगर्ल मॉडल। मेरे पास कार और कार निर्माता हैं। कारें कार निर्माताओं से संबंधित हैं इसलिए विदेशी कुंजी / चर कार में है। जब मैं अपने परीक्षण चलाता हूं, तो मुझे यह त्रुटि मिलती है।

Failure/Error: car = FactoryGirl.build(:car)
NoMethodError:
undefined method `car_manufacturer=" for #<Car:0x0000010437a7d0>

यहां spec / कारखानों फ़ोल्डर में स्थित मेरे कारखानों हैं

FactoryGirl.define do
factory :car do
color "Black"
year 2012
mileage 50000
description "Badass used car"
car_manufacturer
end
end

FactoryGirl.define do
factory :car_manufacturer do
name "Speed Racer Inc."
country "Japan"
end
end

मेरे पास मेरे एसोसिएशन सत्यापन में कुछ भी स्थापित नहीं है क्योंकि जो मैंने समझा, कारखाने की लड़की अलग है इसलिए इसे काम करना चाहिए। शायद मेरे spec में कुछ गलत है:

scenario "I want to associate a car with a car manufacturer" do
car_manufacturer = FactoryGirl.create(:car_manufacturer)
car = FactoryGirl.build(:car)
car_count = Car.count
visit new_car_path
fill_in "Color", with: car.color
select car.year, from: "Year"
fill_in "Mileage", with: car.mileage
fill_in "Description", with: car.description
select car_manufacturer.name, from: "Owner"
click_on "Create Car"
expect(page).to have_content("Car Submitted")
expect(Car.count).to eql(car_count + 1)
end

सहायता के लिए धनयवाद। मैं बस अनिश्चित हूं कि ऐसा क्यों होगा और यह नहीं पता कि मुझे इसे ठीक करने का प्रयास करना चाहिए।

ठीक है, तो मुझे लगता है कि मुझे जवाब मिला। इससे पहले कि मेरे पास मेरी मॉडल फ़ाइल में एसोसिएशन नहीं हैं। मैंने बाद में उन्हें नीचे जोड़ा है:

require "spec_helper"

describe Car do
it { should validate_presence_of(:color) }
it { should validate_presence_of(:year) }
it { should validate_presence_of(:mileage) }
it { should ensure_inclusion_of(:year).in_array(Car::YEARS) }
it { should_not have_valid(:year).when("","nineteenninetynine",1979) }
it { should_not have_valid(:mileage).when("3300 miles") }
it { should belong_to(:car_manufacturer) }
end

require "spec_helper"

describe CarManufacturer do
it { should validate_presence_of(:name) }
it { should validate_presence_of(:country) }
it { should_not have_valid(:name).when("",nil) }
it { should_not have_valid(:country).when("",nil) }
it { should have_many(:cars) }
end

मेरा नया सवाल यह है कि फैक्टरी गर्ल पर निर्भर करता हैमॉडल सत्यापन? मैं इस धारणा के तहत था कि यह नहीं था। क्या कोई स्पष्टीकरण दे सकता है। मैंने जिथब दस्तावेज की कोशिश की लेकिन मुझे याद नहीं आया कि यह स्पष्ट रूप से ऐसा कहता है। धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

क्या आप सत्यापित कर सकते हैं कि आपने परीक्षण डेटाबेस माइग्रेट किया है? अक्सर, जब कोई एक्सेसर सही तरीके से काम नहीं कर रहा है (इस उदाहरण में, car_manufacturer=), यह या तो गलत वर्तनी है या परीक्षण डेटाबेस सही ढंग से माइग्रेट नहीं किया गया है (क्योंकि एआर तालिका पर घुस जाएगा)।


संबंधित सवाल
सबसे लोकप्रिय