mirror of
https://github.com/internetee/registry.git
synced 2025-08-03 00:12:03 +02:00
Nameservers refactor
This commit is contained in:
parent
57e8bf81e3
commit
1e13c54eb9
9 changed files with 182 additions and 140 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
4
app/models/domain_nameserver.rb
Normal file
4
app/models/domain_nameserver.rb
Normal file
|
@ -0,0 +1,4 @@
|
|||
class DomainNameserver < ActiveRecord::Base
|
||||
belongs_to :domain
|
||||
belongs_to :nameserver
|
||||
end
|
|
@ -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 }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue