mirror of
https://github.com/internetee/registry.git
synced 2025-08-05 17:28:18 +02:00
Add custom validation to nameservers uniqueness
This commit is contained in:
parent
44dce714b8
commit
f65cf32991
7 changed files with 45 additions and 17 deletions
|
@ -38,6 +38,9 @@ class Domain < ActiveRecord::Base
|
|||
validates :owner_contact, presence: true
|
||||
|
||||
validate :validate_period
|
||||
validate :validate_nameservers_count
|
||||
validate :validate_nameservers_uniqueness, if: :new_record?
|
||||
# validates_associated :nameservers
|
||||
|
||||
attr_accessor :adding_admin_contact
|
||||
validate :validate_admin_contacts_max_count, if: :adding_admin_contact
|
||||
|
@ -55,7 +58,7 @@ class Domain < ActiveRecord::Base
|
|||
validate :validate_tech_contacts_max_count, if: :adding_tech_contact
|
||||
|
||||
attr_accessor :deleting_tech_contact
|
||||
# validate :validate_tech_contacts_min_count, if: :deleting_tech_contact
|
||||
validate :validate_tech_contacts_min_count, if: :deleting_tech_contact
|
||||
|
||||
def name=(value)
|
||||
value.strip!
|
||||
|
@ -111,6 +114,18 @@ class Domain < ActiveRecord::Base
|
|||
errors.add(:admin_contacts, :out_of_range) if admin_contacts_count.zero?
|
||||
end
|
||||
|
||||
def validate_nameservers_uniqueness
|
||||
validated = []
|
||||
nameservers.each do |ns|
|
||||
next if ns.hostname.blank?
|
||||
existing = nameservers.select { |x| x.hostname == ns.hostname }
|
||||
next unless existing.length > 1
|
||||
validated << ns.hostname
|
||||
errors.add(:'nameservers.hostname', 'duplicate')
|
||||
ns.errors.add(:hostname, :taken)
|
||||
end
|
||||
end
|
||||
|
||||
def validate_period
|
||||
return unless period.present?
|
||||
if period_unit == 'd'
|
||||
|
@ -131,6 +146,10 @@ class Domain < ActiveRecord::Base
|
|||
errors.empty?
|
||||
end
|
||||
|
||||
def associations_valid?(name)
|
||||
!errors.keys.any? { |x| x.match(/#{name.to_s}/) }
|
||||
end
|
||||
|
||||
## SHARED
|
||||
|
||||
def to_s
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue