Add column FederalSubject#number
This commit is contained in:
parent
08905f3576
commit
58b10dbdaa
6 changed files with 40 additions and 3 deletions
|
@ -27,6 +27,11 @@ class FederalSubject < ApplicationRecord
|
|||
|
||||
validates :native_name, presence: true, uniqueness: true
|
||||
|
||||
validates :number,
|
||||
presence: true,
|
||||
uniqueness: true,
|
||||
numericality: { only_integer: true, greater_than: 0 }
|
||||
|
||||
###########
|
||||
# Methods #
|
||||
###########
|
||||
|
|
10
db/migrate/20190719224405_add_number_to_federal_subjects.rb
Normal file
10
db/migrate/20190719224405_add_number_to_federal_subjects.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddNumberToFederalSubjects < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
# rubocop:disable Rails/NotNullColumn
|
||||
add_column :federal_subjects, :number, :integer, null: false
|
||||
add_index :federal_subjects, :number, unique: true
|
||||
# rubocop:enable Rails/NotNullColumn
|
||||
end
|
||||
end
|
|
@ -5,14 +5,16 @@ require 'csv'
|
|||
federal_subjects_filename = Rails.root.join 'config', 'federal_subjects.csv'
|
||||
|
||||
CSV.foreach federal_subjects_filename,
|
||||
col_sep: '|' do |(id, english_name, native_name, _number)|
|
||||
col_sep: '|' do |(id, english_name, native_name, number)|
|
||||
id = Integer(id.strip)
|
||||
english_name.strip!
|
||||
native_name.strip!
|
||||
number = Integer(number.strip.sub(/\A0*/, ''))
|
||||
|
||||
FederalSubject.where(id: id).first_or_create! do |new_federal_subject|
|
||||
new_federal_subject.english_name = english_name
|
||||
new_federal_subject.native_name = native_name
|
||||
new_federal_subject.number = number
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -219,7 +219,8 @@ CREATE TABLE public.federal_subjects (
|
|||
created_at timestamp without time zone NOT NULL,
|
||||
updated_at timestamp without time zone NOT NULL,
|
||||
english_name character varying NOT NULL,
|
||||
native_name character varying NOT NULL
|
||||
native_name character varying NOT NULL,
|
||||
number integer NOT NULL
|
||||
);
|
||||
|
||||
|
||||
|
@ -834,6 +835,13 @@ CREATE UNIQUE INDEX index_federal_subjects_on_english_name ON public.federal_sub
|
|||
CREATE UNIQUE INDEX index_federal_subjects_on_native_name ON public.federal_subjects USING btree (native_name);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_federal_subjects_on_number; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE UNIQUE INDEX index_federal_subjects_on_number ON public.federal_subjects USING btree (number);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_passports_on_person_id; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
@ -1158,6 +1166,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||
('20190715210610'),
|
||||
('20190718181335'),
|
||||
('20190718184543'),
|
||||
('20190719024630');
|
||||
('20190719024630'),
|
||||
('20190719224405');
|
||||
|
||||
|
||||
|
|
|
@ -13,5 +13,7 @@ FactoryBot.define do
|
|||
end
|
||||
|
||||
native_name { english_name }
|
||||
|
||||
sequence :number
|
||||
end
|
||||
end
|
||||
|
|
|
@ -15,9 +15,18 @@ RSpec.describe FederalSubject do
|
|||
|
||||
it { is_expected.to validate_presence_of :english_name }
|
||||
it { is_expected.to validate_presence_of :native_name }
|
||||
it { is_expected.to validate_presence_of :number }
|
||||
|
||||
it { is_expected.to validate_uniqueness_of :english_name }
|
||||
it { is_expected.to validate_uniqueness_of :native_name }
|
||||
it { is_expected.to validate_uniqueness_of :number }
|
||||
|
||||
it do
|
||||
is_expected.to \
|
||||
validate_numericality_of(:number)
|
||||
.only_integer
|
||||
.is_greater_than(0)
|
||||
end
|
||||
|
||||
describe '.order_by_display_name' do
|
||||
let! :federal_subject_1 do
|
||||
|
|
Reference in a new issue