diff --git a/app/models/passport.rb b/app/models/passport.rb
index a90f250..48dfc0e 100644
--- a/app/models/passport.rb
+++ b/app/models/passport.rb
@@ -1,33 +1,21 @@
# frozen_string_literal: true
class Passport < ApplicationRecord
+ include Nameable
+
################
# Associations #
################
belongs_to :person, optional: true
- has_many :passport_maps,
- dependent: :restrict_with_exception
+ ###############
+ # Validations #
+ ###############
- accepts_nested_attributes_for :passport_maps,
- reject_if: :blank_passport_map?
-
- ###########
- # Methods #
- ###########
-
- def passport_map
- passport_maps.order(created_at: :asc).last
- end
-
-private
-
- def blank_passport_map?(passport_map_attributes)
- passport_map_attributes.all? do |key, value|
- next true if key.start_with? 'date_'
-
- value.blank?
- end
- end
+ validates :series, presence: true
+ validates :number, presence: true
+ validates :issued_by, presence: true
+ validates :unit_code, presence: true
+ validates :date_of_issue, presence: true
end
diff --git a/app/models/passport_map.rb b/app/models/passport_map.rb
deleted file mode 100644
index 51fc648..0000000
--- a/app/models/passport_map.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-class PassportMap < ApplicationRecord
- include Nameable
-
- ################
- # Associations #
- ################
-
- belongs_to :passport
-
- ###############
- # Validations #
- ###############
-
- validates :series, presence: true
- validates :number, presence: true
- validates :issued_by, presence: true
- validates :unit_code, presence: true
- validates :date_of_issue, presence: true
-end
diff --git a/app/views/staffs/people/passports/index.html.erb b/app/views/staffs/people/passports/index.html.erb
index e9b5a9d..0410873 100644
--- a/app/views/staffs/people/passports/index.html.erb
+++ b/app/views/staffs/people/passports/index.html.erb
@@ -9,16 +9,16 @@
<%= Passport.human_attribute_name :id %>
- <%= PassportMap.human_attribute_name :series %>
+ <%= Passport.human_attribute_name :series %>
|
- <%= PassportMap.human_attribute_name :number %>
+ <%= Passport.human_attribute_name :number %>
|
- <%= PassportMap.human_attribute_name :unit_code %>
+ <%= Passport.human_attribute_name :unit_code %>
|
- <%= PassportMap.human_attribute_name :date_of_issue %>
+ <%= Passport.human_attribute_name :date_of_issue %>
|
|
@@ -28,10 +28,10 @@
<% @passports.each do |passport| %>
<%= passport.id %> |
- <%= passport.passport_map&.series %> |
- <%= passport.passport_map&.number %> |
- <%= passport.passport_map&.unit_code %> |
- <%= passport.passport_map&.date_of_issue %> |
+ <%= passport.series %> |
+ <%= passport.number %> |
+ <%= passport.unit_code %> |
+ <%= passport.date_of_issue %> |
|
<% end %>
diff --git a/config/locales/activerecord/en.yml b/config/locales/activerecord/en.yml
index 887b956..760e239 100644
--- a/config/locales/activerecord/en.yml
+++ b/config/locales/activerecord/en.yml
@@ -10,9 +10,6 @@ en:
passport:
one: Passport
many: Passports
- passport_map:
- one: Passport mapping
- many: Passport mappings
person:
one: Person
many: People
@@ -41,8 +38,6 @@ en:
native_name: Name
passport:
id: ID
- passport_map:
- id: ID
first_name: First name
middle_name: Middle name
last_name: Last name
@@ -54,7 +49,7 @@ en:
issued_by: Issued by
unit_code: Unit code
date_of_issue: Date of issue
- passport_map/sex:
+ passport/sex:
male: Male
female: Female
person:
diff --git a/config/locales/activerecord/ru.yml b/config/locales/activerecord/ru.yml
index 4d35268..bee6b32 100644
--- a/config/locales/activerecord/ru.yml
+++ b/config/locales/activerecord/ru.yml
@@ -10,9 +10,6 @@ ru:
passport:
one: Паспорт
many: Паспорта
- passport_map:
- one: Отображение паспорта
- many: Отображения паспортов
person:
one: Человек
many: Люди
@@ -41,8 +38,6 @@ ru:
native_name: Название
passport:
id: ID
- passport_map:
- id: ID
first_name: Имя
middle_name: Отчество
last_name: Фамилия
@@ -54,7 +49,7 @@ ru:
issued_by: Кем выдан
unit_code: Код подразделения
date_of_issue: Дата выдачи
- passport_map/sex:
+ passport/sex:
male: Мужской
female: Женский
person:
diff --git a/factories/passport_maps.rb b/factories/passport_maps.rb
deleted file mode 100644
index c4e487b..0000000
--- a/factories/passport_maps.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# frozen_string_literal: true
-
-FactoryBot.define do
- factory :passport_map do
- association :passport, factory: :empty_passport
-
- first_name { Faker::Name.first_name }
- middle_name { Faker::Name.first_name }
- last_name { Faker::Name.last_name }
- sex { PassportMap.sexes.keys.sample }
- date_of_birth { Faker::Date.backward }
- place_of_birth { Faker::Address.city }
- series { rand 0..9999 }
- number { rand 0..999_999 }
- issued_by { Faker::Lorem.sentence }
- unit_code do
- "#{rand(0..999).to_s.rjust(3, '0')}-#{rand(0..999).to_s.rjust(3, '0')}"
- end
- date_of_issue { Faker::Date.backward }
- end
-end
diff --git a/factories/passports.rb b/factories/passports.rb
index 58be143..06137bd 100644
--- a/factories/passports.rb
+++ b/factories/passports.rb
@@ -4,14 +4,18 @@ FactoryBot.define do
factory :empty_passport, class: Passport do
association :person, factory: :initial_person
- trait :with_map do
- after :create do |passport, _evaluator|
- create :passport_map, passport: passport
- end
+ first_name { Faker::Name.first_name }
+ middle_name { Faker::Name.first_name }
+ last_name { Faker::Name.last_name }
+ sex { Passport.sexes.keys.sample }
+ date_of_birth { Faker::Date.backward }
+ place_of_birth { Faker::Address.city }
+ series { rand 0..9999 }
+ number { rand 0..999_999 }
+ issued_by { Faker::Lorem.sentence }
+ unit_code do
+ "#{rand(0..999).to_s.rjust(3, '0')}-#{rand(0..999).to_s.rjust(3, '0')}"
end
+ date_of_issue { Faker::Date.backward }
end
-
- factory :passport_with_map,
- parent: :empty_passport,
- traits: %i[with_map]
end
diff --git a/spec/models/passport_map_spec.rb b/spec/models/passport_map_spec.rb
deleted file mode 100644
index 0711fe4..0000000
--- a/spec/models/passport_map_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe PassportMap do
- subject { create :passport_map }
-
- it_behaves_like 'nameable'
-
- it { is_expected.to belong_to :passport }
-
- it { is_expected.to validate_presence_of(:passport).with_message(:required) }
-
- it { is_expected.to validate_presence_of :series }
- it { is_expected.to validate_presence_of :number }
- it { is_expected.to validate_presence_of :issued_by }
- it { is_expected.to validate_presence_of :unit_code }
- it { is_expected.to validate_presence_of :date_of_issue }
-end
diff --git a/spec/models/passport_spec.rb b/spec/models/passport_spec.rb
index 06c52ee..63cd6f6 100644
--- a/spec/models/passport_spec.rb
+++ b/spec/models/passport_spec.rb
@@ -5,13 +5,13 @@ require 'rails_helper'
RSpec.describe Passport do
subject { create :empty_passport }
+ it_behaves_like 'nameable'
+
it { is_expected.to belong_to(:person).optional }
- it do
- is_expected.to \
- have_many(:passport_maps)
- .dependent(:restrict_with_exception)
- end
-
- pending '#passport_map'
+ it { is_expected.to validate_presence_of :series }
+ it { is_expected.to validate_presence_of :number }
+ it { is_expected.to validate_presence_of :issued_by }
+ it { is_expected.to validate_presence_of :unit_code }
+ it { is_expected.to validate_presence_of :date_of_issue }
end
diff --git a/spec/requests/staff/people/passports/index_spec.rb b/spec/requests/staff/people/passports/index_spec.rb
index 16ee911..a8fe409 100644
--- a/spec/requests/staff/people/passports/index_spec.rb
+++ b/spec/requests/staff/people/passports/index_spec.rb
@@ -8,8 +8,7 @@ RSpec.describe 'GET /staff/people/:person_id/passports' do
before do
sign_in current_account.user if current_account&.user
- create :empty_passport, person: person
- create :passport_with_map, person: person
+ create :empty_passport, person: person
get "/staff/people/#{person.to_param}/passports"
end