Nameservers refactor

This commit is contained in:
Martin Lensment 2014-08-26 13:35:26 +03:00
parent 57e8bf81e3
commit 1e13c54eb9
9 changed files with 182 additions and 140 deletions

View file

@ -21,7 +21,8 @@ module EppErrors
values.each do |err|
if err.is_a?(Hash)
next unless code = find_epp_code(err[:msg])
code = err[:code] || find_epp_code(err[:msg])
next unless code
err_msg = { code: code, msg: err[:msg] }
err_msg[:value] = { val: err[:val], obj: err[:obj] } if err[:val]
epp_errors << err_msg

View file

@ -23,7 +23,8 @@ class Domain < ActiveRecord::Base
where(domain_contacts: { contact_type: DomainContact::ADMIN })
end, through: :domain_contacts, source: :contact
has_and_belongs_to_many :nameservers
has_many :domain_nameservers
has_many :nameservers, through: :domain_nameservers
has_many :domain_statuses, -> {
joins(:setting).where(settings: { setting_group_id: SettingGroup.domain_statuses.id })
@ -121,7 +122,18 @@ class Domain < ActiveRecord::Base
def attach_nameservers(ns_list)
ns_list.each do |ns_attrs|
existing = nameservers.select { |x| x.hostname == ns_attrs[:hostname] }
nameservers.build(ns_attrs)
next if existing.empty?
errors.add(:nameservers, {
code: '2302',
obj: 'hostObj',
val: ns_attrs[:hostname],
msg: errors.generate_message(:nameservers, :taken)
})
end
end

View file

@ -0,0 +1,4 @@
class DomainNameserver < ActiveRecord::Base
belongs_to :domain
belongs_to :nameserver
end

View file

@ -6,7 +6,9 @@ class Nameserver < ActiveRecord::Base
}
belongs_to :registrar
has_and_belongs_to_many :domains
has_many :domain_nameservers
has_many :domains, through: :domain_nameservers
validates :hostname, format: { with: /\A(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\z/ }
validates :ipv4, format: { with: /\A(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\z/, allow_nil: true }