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 :native_name, presence: true, uniqueness: true
|
||||||
|
|
||||||
|
validates :number,
|
||||||
|
presence: true,
|
||||||
|
uniqueness: true,
|
||||||
|
numericality: { only_integer: true, greater_than: 0 }
|
||||||
|
|
||||||
###########
|
###########
|
||||||
# Methods #
|
# 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'
|
federal_subjects_filename = Rails.root.join 'config', 'federal_subjects.csv'
|
||||||
|
|
||||||
CSV.foreach federal_subjects_filename,
|
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)
|
id = Integer(id.strip)
|
||||||
english_name.strip!
|
english_name.strip!
|
||||||
native_name.strip!
|
native_name.strip!
|
||||||
|
number = Integer(number.strip.sub(/\A0*/, ''))
|
||||||
|
|
||||||
FederalSubject.where(id: id).first_or_create! do |new_federal_subject|
|
FederalSubject.where(id: id).first_or_create! do |new_federal_subject|
|
||||||
new_federal_subject.english_name = english_name
|
new_federal_subject.english_name = english_name
|
||||||
new_federal_subject.native_name = native_name
|
new_federal_subject.native_name = native_name
|
||||||
|
new_federal_subject.number = number
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,8 @@ CREATE TABLE public.federal_subjects (
|
||||||
created_at timestamp without time zone NOT NULL,
|
created_at timestamp without time zone NOT NULL,
|
||||||
updated_at timestamp without time zone NOT NULL,
|
updated_at timestamp without time zone NOT NULL,
|
||||||
english_name character varying 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);
|
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: -
|
-- Name: index_passports_on_person_id; Type: INDEX; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
@ -1158,6 +1166,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||||
('20190715210610'),
|
('20190715210610'),
|
||||||
('20190718181335'),
|
('20190718181335'),
|
||||||
('20190718184543'),
|
('20190718184543'),
|
||||||
('20190719024630');
|
('20190719024630'),
|
||||||
|
('20190719224405');
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,5 +13,7 @@ FactoryBot.define do
|
||||||
end
|
end
|
||||||
|
|
||||||
native_name { english_name }
|
native_name { english_name }
|
||||||
|
|
||||||
|
sequence :number
|
||||||
end
|
end
|
||||||
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 :english_name }
|
||||||
it { is_expected.to validate_presence_of :native_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 :english_name }
|
||||||
it { is_expected.to validate_uniqueness_of :native_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
|
describe '.order_by_display_name' do
|
||||||
let! :federal_subject_1 do
|
let! :federal_subject_1 do
|
||||||
|
|
Reference in a new issue