2010-11-29 152 views
0

有什麼方法可以創建IP地址範圍?如192.168.0.1/24。 每次創建數據都太麻煩了。 我找到了Rubygems的ipaddress。 http://rubygems.org/gems/ipaddress。 我想這個創建IP範圍。如何創建IP地址範圍

在new.heml.erb

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

我不會在軌模式如何使用它

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

有人可以給我一些指導。

+0

您應該用四個空格縮進來格式化代碼。 – SLaks 2010-11-29 14:12:46

+0

有更多具體建議嗎? – Gary 2010-11-29 14:15:03

回答

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 

這可能不是處理這個理想的方式 - 可能需要更多的邏輯來處理對子網模型&的更新,將這些更改級聯到地址模型。

無論如何,我希望這會有所幫助。

0

最好的解決辦法是在你的模型提供了一個包裝函數:

def iprange_arr 
    IPAddress(iprange) 
end 

不要試圖在現場(iprange)來代替地址,因爲這將是很難讀回眼簾