之前已经问过一个几乎相同的问题(如何使用应该匹配器来测试多态关联?)但是没有明确的答案可以帮助我,所以我再试一次。
我正在使用 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
据我所知,一切都已准备好通过应该测试,那为什么不呢?应该匹配器应该与多态关联“正常工作”。如果我进入控制台,我可以轻松地创建具有并发症的治疗方法。有任何想法吗?