Это то, что вы ищете? (Предупреждение: не проверено):
Модель: subnet.rb
require 'ipaddress'
class Subnet < ActiveRecord::Base
has_many :addresses
after_create :populate_addresses
def populate_addresses
range = IPAddress(self.iprange)
subnet_id = self.id
range.each do |ip|
Address.create(:ipv4 => ip, :subnet_id => subnet_id)
end
end
end
Модель: address.rb
class Address < ActiveRecord::Base
# ipv4: string
# subnet_id: integer
belongs_to :subnet
end
Вероятно, это не идеальный способ справиться с этим - возможно, потребуется немного больше логики для обработки обновлений модели подсети и каскадирования этих изменений в модели адреса.
В любом случае, надеюсь, это немного поможет.