この問題は工場に関係していますが、最初にlocation_spec.rbを表示します。
require 'spec_helper'
describe Location do
before(:each) do
@location = FactoryGirl.build(:location)
end
subject { @location }
describe "should be valid in general" do
it { should be_valid }
end
describe "when user_id is not present" do
before { @location.user_id = nil }
it { should_not be_valid }
end
describe "when owner_id is not present" do
before { @location.owner_id = nil }
it { should_not be_valid }
end
end
ここに私の工場があります.rb
FactoryGirl.define do
factory :user do
username 'user1'
email 'user@example.com'
timezone 'Eastern Time (US & Canada)'
password 'testing'
end
factory :owner do
name 'Owner One'
user
end
factory :location do
name 'Location One'
about 'About this location'
website 'http://www.locationone.com/'
phone_number '12 323-4234'
street_address 'Shibuya, Tokyo, Japan'
association :owner, strategy: :build
end
end
Location.rb
class Location < ActiveRecord::Base
attr_accessible :about, :name, :owner_id, :phone_number,:street_address, :website
belongs_to :owner
belongs_to :user
validates_presence_of :owner_id
validates_presence_of :user_id
end
これが私が得るエラーです:
Failures:
1) Location should be valid in general
Failure/Error: it { should be_valid }
expected valid? to return true, got false
#./spec/models/location_spec.rb:53:in `block (3 levels) in <top (required)>'
私が信じている場所の関連付けを間違って構築しているため、このエラーが発生します。関連付けは、ユーザーと所有者が既に保存されている必要があり、場所が両方に既に割り当てられているだけではありません。私は自分の工場で正しい方向に進んでいますか、それとも何か他のものですか? どう思いますか?
前もって感謝します。