如何创建IP地址范围

时间:2010-11-29 14:11:06

标签: ruby-on-rails ruby-on-rails-plugins

有没有办法创建IP地址范围?像192.168.0.1/24。 每次创建数据都太烦人了。 我找到了一个Rubygems的ipaddress。 http://rubygems.org/gems/ipaddress。 我想借此创建IP范围。

在new.heml.erb

<%= f.lable :iprange %>
<%= f.text.field :iprange %>

我不知道如何在rails的模型中使用它

ip = IPAddress("192.168.0.1/24")
ip.each do |i|
 p i.to_s
end

有人可以给我一些指导。

2 个答案:

答案 0 :(得分:0)

最好的解决方案是在模型中提供包装函数:

def iprange_arr
  IPAddress(iprange)
end

不要尝试替换字段中的地址(iprange),因为很难将它们读回视图

答案 1 :(得分:0)

这是你在找什么? (警告:未经测试):

型号: 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

这可能不是理想的处理方式 - 可能需要更多的逻辑来处理子网模型的更新。将这些更改级联到Address模型。

无论如何,我希望这有点帮助。