You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
828 B
34 lines
828 B
13 years ago
|
class Domain < ActiveRecord::Base
|
||
|
|
||
|
before_validation(:on => :update) do
|
||
|
if name_changed?
|
||
|
name_was_pattern = /#{Regexp.escape(name_was)}$/
|
||
|
each_update_involved_record do |record|
|
||
|
if record.type == 'SOA'
|
||
|
record.reset_serial
|
||
|
record.name = name
|
||
|
else
|
||
|
record.name = record.name.sub(name_was_pattern, name)
|
||
|
end
|
||
|
record.domain = self
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
after_update do
|
||
|
if name_changed?
|
||
|
name_was_pattern = /#{Regexp.escape(name_was)}$/
|
||
|
records.each do |record|
|
||
|
record.name = record.name.sub(name_was_pattern, name)
|
||
|
record.save!
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def each_update_involved_record
|
||
|
yield soa_record
|
||
|
soa_records.each { |record| yield record }
|
||
|
records.each { |record| yield record }
|
||
|
end
|
||
|
|
||
|
end
|