openstreetmap-website/db/migrate/20120208122334_merge_acl_address_and_mask.rb
2023-12-05 18:13:13 +00:00

48 lines
849 B
Ruby

require "ipaddr"
class IPAddr
def address
_to_string(@addr)
end
def netmask
_to_string(@mask_addr)
end
end
class MergeAclAddressAndMask < ActiveRecord::Migration[4.2]
class Acl < ApplicationRecord
end
def up
Acl.find_each do |acl|
address = IPAddr.new(acl.address)
netmask = IPAddr.new(acl.netmask)
prefix = 0
while netmask != "0.0.0.0"
netmask <<= 1
prefix += 1
end
acl.address = "#{address.mask(prefix)}/#{prefix}"
acl.save!
end
remove_column :acls, :netmask
end
def down
add_column :acls, :netmask, :inet
Acl.find_each do |acl|
address = IPAddr.new(acl.address)
acl.address = address.address
acl.netmask = address.netmask
acl.save!
end
change_column :acls, :netmask, :inet, :null => false
end
end