2010-11-29 13 views
0

IPアドレス範囲を作成する方法はありますか? 192.168.0.1/24のように。 毎回データを作成するのは面倒です。 RubygemsのIPアドレスが見つかりました。 http://rubygems.org/gems/ipaddress。 これを作成したIP範囲に入れたいと思います。 new.heml.erbIPアドレス範囲を作成する方法

<%= 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

コードを4つのスペースでインデントしてフォーマットする必要があります。 – SLaks

+0

もっと具体的な推奨事項がありますか? – Gary

+0

範囲を192.168.0.1/24としてデータベースに保存し、後でそれを行うか、IPアドレスごとに個別のレコードを作成しますか? – Brian

答えて

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)のアドレスを交換しようとしない

+0

ありがとう、mpapis。私はあなたの提案を試して、192.168.0.1/24のみ256.1レコード(192.168.0.0 ... 192.168.0.2 ... 192.168.0.255)ではなく192.168.0.1/24のレコードを表示します。どうすればこの問題を解決できますか? – Gary

関連する問題