이 질문에 대한 대부분의 질문은 (How to use shoulda matchers to test a polymorphic assoication?) 전에 질문되었지만 확실한 답이 없어 도움이되었다. 그래서 다시 시도하고있다.어떻게하면 다형성 연관을 인식 할 수 있습니까?
내 연결을 테스트 했어야을 사용하고 다음과 같은 시험이 다음과 같은 메시지가
Failure/Error: it{should have_many :complications}
Expected Treatment to have a has_many association called complications (Complication does not have a complicatable_id foreign key.)
문제는 내 합병증 테이블이 complicatable_id 열이 없다는 것입니다 실패
require 'spec_helper'
describe LabourEpidural do
before {@treatment = FactoryGirl.build :treatment}
subject {@treatment}
it{should have_many :complications}
end
실패합니다. 내 모델의 관련 부분은 다음과 같습니다.
class Treatment < ActiveRecord::Base
has_many :complications, as: :complicatable, dependent: :destroy
end
class Complication < ActiveRecord::Base
belongs_to :complicatable, polymorphic: true
end
및 my schema.rb;
create_table "complications", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "complicatable_id"
t.string "complicatable_type"
end
나는 shoulda 테스트를 통과하기 위해 모든 것을 알 수 있습니다. 그렇다면 왜 그렇지 않습니까? matchers는 다형성의 연관성을 가지고 '그냥 작동'한다고 가정합니다. 콘솔에 들어가면 합병증이있는 치료법을 쉽게 만들 수 있습니다. 어떤 아이디어?
콘솔에서 연결에 액세스하려고했는데 제대로 작동합니까? – usha
테스트 데이터베이스에서 마이그레이션을 실행 했습니까? –
예 콘솔에서 연결을 시도했지만 예는 작동했습니다. – brad