From 2d5f64792f435a1d7ce5a501ee3d5e0f477f7ada Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Fri, 7 Dec 2018 04:00:15 +0500 Subject: [PATCH] Add associations --- app/models/membership_app.rb | 2 ++ app/models/regional_office.rb | 2 ++ spec/models/membership_app_spec.rb | 2 ++ spec/models/regional_office_spec.rb | 2 ++ 4 files changed, 8 insertions(+) diff --git a/app/models/membership_app.rb b/app/models/membership_app.rb index c7c29a0..6207e73 100644 --- a/app/models/membership_app.rb +++ b/app/models/membership_app.rb @@ -4,6 +4,8 @@ class MembershipApp < ApplicationRecord belongs_to :account, inverse_of: :own_membership_apps belongs_to :country_state, optional: true + has_one :regional_office, through: :country_state + validates :email, presence: true, format: Devise.email_regexp validates :first_name, presence: true diff --git a/app/models/regional_office.rb b/app/models/regional_office.rb index 566c4b1..ca563b8 100644 --- a/app/models/regional_office.rb +++ b/app/models/regional_office.rb @@ -3,5 +3,7 @@ class RegionalOffice < ApplicationRecord belongs_to :country_state + has_many :membership_apps, through: :country_state + validates :country_state_id, uniqueness: true end diff --git a/spec/models/membership_app_spec.rb b/spec/models/membership_app_spec.rb index 0ff5fd7..96689ef 100644 --- a/spec/models/membership_app_spec.rb +++ b/spec/models/membership_app_spec.rb @@ -8,6 +8,8 @@ RSpec.describe MembershipApp do it { is_expected.to belong_to(:account).inverse_of(:own_membership_apps) } it { is_expected.to belong_to(:country_state).optional } + it { is_expected.to have_one(:regional_office).through(:country_state) } + it { is_expected.to validate_presence_of(:account).with_message(:required) } it { is_expected.not_to validate_presence_of :country_state } it { is_expected.to validate_presence_of :first_name } diff --git a/spec/models/regional_office_spec.rb b/spec/models/regional_office_spec.rb index 4106e7f..0c1e16f 100644 --- a/spec/models/regional_office_spec.rb +++ b/spec/models/regional_office_spec.rb @@ -7,6 +7,8 @@ RSpec.describe RegionalOffice do it { is_expected.to belong_to :country_state } + it { is_expected.to have_many(:membership_apps).through(:country_state) } + it do is_expected.to \ validate_presence_of(:country_state)