Refactor status uniqueness

This commit is contained in:
Martin Lensment 2014-09-11 13:03:42 +03:00
parent 2982b22921
commit 98c2717539
2 changed files with 14 additions and 15 deletions

View file

@ -35,7 +35,6 @@ class Domain < ActiveRecord::Base
validate :validate_period validate :validate_period
validate :validate_nameservers_uniqueness validate :validate_nameservers_uniqueness
validate :validate_statuses_uniqueness
def name=(value) def name=(value)
value.strip! value.strip!
@ -58,20 +57,6 @@ class Domain < ActiveRecord::Base
errors.add(:nameservers, :out_of_range, { min: min, max: max }) errors.add(:nameservers, :out_of_range, { min: min, max: max })
end end
def validate_statuses_uniqueness
validated = []
domain_statuses.each do |status|
next if validated.include?(status.value)
existing = domain_statuses.select { |x| x.value == status.value }
if existing.length > 1
validated << status.value
errors.add(:domain_statuses, :taken)
add_epp_error('2302', 'status', status.value, [:domain_statuses, :taken])
end
end
end
def validate_nameservers_uniqueness def validate_nameservers_uniqueness
validated = [] validated = []
nameservers.each do |ns| nameservers.each do |ns|

View file

@ -22,4 +22,18 @@ class DomainStatus < ActiveRecord::Base
PENDING_UPDATE = 'pendingUpdate' PENDING_UPDATE = 'pendingUpdate'
STATUSES = [CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD, CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED, SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED, INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER, PENDING_UPDATE] STATUSES = [CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD, CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED, SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED, INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER, PENDING_UPDATE]
EPP_ATTR_MAP = {
value: 'status'
}
validates :value, uniqueness: { scope: :domain_id }
def epp_code_map
{
'2302' => [ # Object exists
[:value, :taken]
]
}
end
end end