1

これとほぼ同じ質問が以前に尋ねられました ( How to use shoulda matchers to test a polymorphic assoication? ) が、私を助ける決定的な答えがなかったので、もう一度試しています。

関連をテストするためにshouldaを使用していますが、次のテストは失敗します

require 'spec_helper'

describe LabourEpidural do
  before {@treatment = FactoryGirl.build :treatment}
  subject {@treatment}
  it{should have_many :complications}
end

これは次のメッセージで失敗します

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.)

問題は、Complication テーブルに complicatable_id 列があることです。これが私のモデルの関連部分です。

class Treatment < ActiveRecord::Base
  has_many :complications, as: :complicatable, dependent: :destroy
end

class Complication < ActiveRecord::Base
  belongs_to :complicatable, polymorphic: true
end

そして私の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 テストに合格するためにすべてが整っているのに、なぜそうではないのでしょうか? Shoulda マッチャーは、ポリモーフィック アソシエーションで「正常に機能する」はずです。コンソールに入ると、複雑な治療法を簡単に作成できます。何か案は?

4

1 に答える 1