有没有办法创建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
有人可以给我一些指导。
答案 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模型。
无论如何,我希望这有点帮助。