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_nameservers_count
|
||||
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
|
||||
|
||||
attr_accessor :adding_admin_contact
|
||||
|
@ -126,6 +128,27 @@ class Domain < ActiveRecord::Base
|
|||
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
|
||||
return unless period.present?
|
||||
if period_unit == 'd'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue