Validation 使用shoulda匹配器测试唯一性范围验证
我有一个模特Validation 使用shoulda匹配器测试唯一性范围验证,validation,ruby-on-rails-4,unique,shoulda,Validation,Ruby On Rails 4,Unique,Shoulda,我有一个模特 class ObjectiveConcept < ActiveRecord::Base validates :objective_id, presence: true validates :concept_id, presence: true validates :concept_id, uniqueness: {scope: :objective_id} belongs_to :objective belongs_to :concept end 当我
class ObjectiveConcept < ActiveRecord::Base
validates :objective_id, presence: true
validates :concept_id, presence: true
validates :concept_id, uniqueness: {scope: :objective_id}
belongs_to :objective
belongs_to :concept
end
当我运行唯一性规范时,我得到以下错误
ObjectiveConcept#Validations should validate uniqueness of concept_id scoped to objective_id
Failure/Error: should validate_uniqueness_of(:concept_id).scoped_to(:objective_id)
ActiveRecord::StatementInvalid:
PG::Error: ERROR: null value in column "objective_id" violates not-null constraint
DETAIL: Failing row contains (20, null, 0, 2014-09-09 10:24:36.87583, 2014-09-09 10:24:36.87583).
: INSERT INTO "objective_concepts" ("concept_id", "created_at", "objective_id", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"
我已按照“注意事项”部分的规定填写了唯一性验证的主题,但无效。我如何解决这个问题 通过从主题块中删除代码来修复它 取代
subject { FactoryGirl.create(:object_concept, concept_id: concept.id, objective_id: objective.id) }
与
subject { FactoryGirl.create(:object_concept, concept_id: concept.id, objective_id: objective.id) }
FactoryGirl.create(:object_concept, concept_id: concept.id, objective_id: objective.id)