1
0
Fork 0

Add column FederalSubject#number

This commit is contained in:
Alex Kotov 2019-07-20 03:52:14 +05:00
parent 08905f3576
commit 58b10dbdaa
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
6 changed files with 40 additions and 3 deletions

View file

@ -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 #
###########

View 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

View file

@ -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

View file

@ -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');

View file

@ -13,5 +13,7 @@ FactoryBot.define do
end
native_name { english_name }
sequence :number
end
end

View file

@ -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