これとほぼ同じ質問が以前に尋ねられました ( 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 マッチャーは、ポリモーフィック アソシエーションで「正常に機能する」はずです。コンソールに入ると、複雑な治療法を簡単に作成できます。何か案は?