mirror of
https://github.com/internetee/registry.git
synced 2025-07-23 03:06:14 +02:00
Custom uniq validation for domain contacts
This commit is contained in:
parent
f65cf32991
commit
8d4a4c437b
1 changed files with 23 additions and 0 deletions
|
@ -40,6 +40,8 @@ class Domain < ActiveRecord::Base
|
||||||
validate :validate_period
|
validate :validate_period
|
||||||
validate :validate_nameservers_count
|
validate :validate_nameservers_count
|
||||||
validate :validate_nameservers_uniqueness, if: :new_record?
|
validate :validate_nameservers_uniqueness, if: :new_record?
|
||||||
|
validate :validate_tech_contacts_uniqueness, if: :new_record?
|
||||||
|
validate :validate_admin_contacts_uniqueness, if: :new_record?
|
||||||
# validates_associated :nameservers
|
# validates_associated :nameservers
|
||||||
|
|
||||||
attr_accessor :adding_admin_contact
|
attr_accessor :adding_admin_contact
|
||||||
|
@ -126,6 +128,27 @@ class Domain < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def validate_tech_contacts_uniqueness
|
||||||
|
contacts = domain_contacts.select { |x| x.contact_type == DomainContact::TECH }
|
||||||
|
validate_domain_contacts_uniqueness(contacts)
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_admin_contacts_uniqueness
|
||||||
|
contacts = domain_contacts.select { |x| x.contact_type == DomainContact::ADMIN }
|
||||||
|
validate_domain_contacts_uniqueness(contacts)
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_domain_contacts_uniqueness(contacts)
|
||||||
|
validated = []
|
||||||
|
contacts.each do |dc|
|
||||||
|
existing = contacts.select { |x| x.contact_id == dc.contact_id }
|
||||||
|
next unless existing.length > 1
|
||||||
|
validated << dc
|
||||||
|
errors.add(:'domain_contacts.contact', 'duplicate')
|
||||||
|
dc.errors.add(:contact, :taken)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def validate_period
|
def validate_period
|
||||||
return unless period.present?
|
return unless period.present?
|
||||||
if period_unit == 'd'
|
if period_unit == 'd'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue