Add uniqueness validation to document_number and document_type pair
This commit is contained in:
committed by
Javi Martín
parent
d1587ecc62
commit
3c39dccad4
@@ -5,6 +5,7 @@ class LocalCensusRecord < ApplicationRecord
|
||||
validates :document_type, presence: true
|
||||
validates :date_of_birth, presence: true
|
||||
validates :postal_code, presence: true
|
||||
validates :document_number, uniqueness: { scope: :document_type }
|
||||
|
||||
scope :search, -> (terms) { where("document_number ILIKE ?", "%#{terms}%") }
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
class AddUniqueIndexToLocalCensusRecords < ActiveRecord::Migration[5.0]
|
||||
def up
|
||||
add_index :local_census_records, [:document_number, :document_type], unique: true
|
||||
end
|
||||
|
||||
def down
|
||||
remove_index :local_census_records, [:document_number, :document_type]
|
||||
end
|
||||
end
|
||||
@@ -978,6 +978,7 @@ ActiveRecord::Schema.define(version: 20190607160900) do
|
||||
t.string "postal_code", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["document_number", "document_type"], name: "index_local_census_records_on_document_number_and_document_type", unique: true, using: :btree
|
||||
t.index ["document_number"], name: "index_local_census_records_on_document_number", using: :btree
|
||||
end
|
||||
|
||||
|
||||
@@ -32,6 +32,14 @@ describe LocalCensusRecord do
|
||||
expect(local_census_record).not_to be_valid
|
||||
end
|
||||
|
||||
it "is not valid when a record already exists with same document_number and document_type" do
|
||||
create(:local_census_record, document_number: "#DOC_NUMBER", document_type: "#DOC_TYPE")
|
||||
local_census_record = build(:local_census_record, document_number: "#DOC_NUMBER",
|
||||
document_type: "#DOC_TYPE")
|
||||
|
||||
expect(local_census_record).not_to be_valid
|
||||
end
|
||||
|
||||
it "sanitizes text attributes values before validation" do
|
||||
local_census_record.document_type = " DNI "
|
||||
local_census_record.document_number = " #DOCUMENT_NUMBER "
|
||||
|
||||
Reference in New Issue
Block a user