1
0
Fork 0

Add association MembershipApplication#country_state

This commit is contained in:
Alex Kotov 2018-12-01 23:55:36 +05:00
parent 454c9b673a
commit 4de8a014bf
No known key found for this signature in database
GPG Key ID: 4E831250F47DE154
9 changed files with 29 additions and 1 deletions

View File

@ -1,5 +1,7 @@
# frozen_string_literal: true
class CountryState < ApplicationRecord
has_many :membership_applications, dependent: :restrict_with_exception
validates :name, presence: true, uniqueness: true
end

View File

@ -1,6 +1,8 @@
# frozen_string_literal: true
class MembershipApplication < ApplicationRecord
belongs_to :country_state, optional: true
validates :first_name, presence: true
validates :last_name, presence: true
validates :date_of_birth, presence: true

View File

@ -16,6 +16,7 @@ en:
attributes:
membership_application:
id: ID
country_state: State
first_name: First name
last_name: Last name
middle_name: Middle name
@ -44,6 +45,7 @@ en:
date_of_issue: Date of issue
country_state:
id: ID
membership_applications: Membership applications
name: Name
passport/confirmed:
'true': Confirmed

View File

@ -16,6 +16,7 @@ ru:
attributes:
membership_application:
id: ID
country_state: Регион
first_name: Имя
last_name: Фамилия
middle_name: Отчество
@ -44,6 +45,7 @@ ru:
date_of_issue: Дата выдачи
country_state:
id: ID
membership_applications: Заявления на вступление
name: Название
passport/confirmed:
'true': Подтверждён

View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
class AddCountryStateToMembershipApplications < ActiveRecord::Migration[5.2]
def change
add_reference :membership_applications, :country_state, foreign_key: true
end
end

View File

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2018_11_30_163121) do
ActiveRecord::Schema.define(version: 2018_12_01_184444) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -56,6 +56,8 @@ ActiveRecord::Schema.define(version: 2018_11_30_163121) do
t.string "telegram_username"
t.text "organization_membership"
t.text "comment"
t.bigint "country_state_id"
t.index ["country_state_id"], name: "index_membership_applications_on_country_state_id"
end
create_table "passport_confirmations", force: :cascade do |t|
@ -138,6 +140,7 @@ ActiveRecord::Schema.define(version: 2018_11_30_163121) do
t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true
end
add_foreign_key "membership_applications", "country_states"
add_foreign_key "passport_confirmations", "passports"
add_foreign_key "passport_confirmations", "users"
add_foreign_key "user_roles", "roles"

View File

@ -2,6 +2,8 @@
FactoryBot.define do
factory :membership_application do
country_state
first_name { Faker::Name.first_name }
last_name { Faker::Name.last_name }
middle_name { Faker::Name.first_name }

View File

@ -5,6 +5,12 @@ require 'rails_helper'
RSpec.describe CountryState do
subject { create :country_state }
it do
is_expected.to \
have_many(:membership_applications)
.dependent(:restrict_with_exception)
end
it { is_expected.to validate_presence_of :name }
it { is_expected.to validate_uniqueness_of :name }

View File

@ -5,6 +5,8 @@ require 'rails_helper'
RSpec.describe MembershipApplication do
subject { create :membership_application }
it { is_expected.to belong_to(:country_state).optional }
it { is_expected.to validate_presence_of :first_name }
it { is_expected.to validate_presence_of :last_name }
it { is_expected.not_to validate_presence_of :middle_name }