我有一个Divisions模型和一个Scorable模型,它们的关联如下:
class Division < ActiveRecord::Base
has_one :scoring, :as => :scorable
validates :name, :presence => true
validates :scoring, :presence => true
end
class Scoring < ActiveRecord::Base
belongs_to :scorable, polymorphic: true
validates :scorable, :presence => true
end
如何在这些模型上测试验证?如果每个工厂的工厂都包含对彼此的引用,我会得到堆栈溢出。但是,如果我按照以下方式制作工厂,那么当我测试时,我得到一个Scorable不能出现空白错误(显然):
FactoryGirl.define do
factory :division do
name "Division"
organisation
association :scoring, factory: :scoring
end
FactoryGirl.define do
factory :scoring do
first 12
second 10
third 8
scorable nil
end
end
如何测试两种模型中关联的存在?
答案 0 :(得分:0)
你的模特错了。在scoring
模型中验证Division
的存在是不可能的。
Division
位于has_one
方,其表中没有此类字段。只有Scoring
模型的表格会有额外的字段scorable_id
和scorable_type
。
从Division
中删除该验证,您的所有代码都可以。