openstreetmap-website/db/migrate/20120208122334_merge_acl_address_and_mask.rb
Andy Allan d130db9fa8 Avoid more models in old migrations
Although these migrations run fine today, they could break in the future
if changes are made to the current model code.
2019-07-17 12:16:20 +02:00

48 lines
859 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 < ActiveRecord::Base
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 = 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