2010-09-20 8 views
26

रेल 3 में, क्या स्ट्रिंग एक वैध आईपी पता देखने के लिए एक अंतर्निहित विधि है?रेल 3: आईपी स्ट्रिंग मान्य करें

यदि नहीं, तो मान्य करने का सबसे आसान तरीका क्या है?

+0

मैं IP4 यहाँ बात कर रहा हूँ। – Dex

उत्तर

16

रेल रास्ता रेल 3 में ActiveRecord के साथ मान्य करने के लिए है:

@ip_regex = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/ 

validates :gateway, 
      :presence => true, 
      :uniqueness => true, 
      :format => { :with => @ip_regex } 

अच्छा संसाधन यहां: http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/

0

मुझे RoR के बारे में बहुत कुछ पता नहीं है, लेकिन यदि आपको आईपी पते के सत्यापन के लिए कोई भी अंतर्निहित विधि नहीं मिलती है।

इस नियमित अभिव्यक्ति पर प्रयास करें:

"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$" 

आईपी पता मान्य करने के लिए।

मैंने हाल ही में इसे एक मॉड्यूल में उपयोग किया है, इसलिए यह डेस्कटॉप पर था।

0

आप का उपयोग करना चाहिए एक Regular Expression

यहाँ

करता है कि आप क्या चाहते हैं में से एक है:

/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\. 
([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/.match("#{@systemIP}") 
59

बस उस इंस्टीए को जोड़ना चाहता था एक Resolv::IPv4::Regex

require 'resolv' 

validates :gateway, :presence => true, :uniqueness => true, 
    :format => { :with => Resolv::IPv4::Regex } 
+0

यह सुनिश्चित नहीं है कि उन्होंने इस सुविधा को कब जोड़ा, लेकिन यह इतना आसान है – Dex

+1

हां यह काफी आसान है। @Dex यह कम से कम रूबी के बाद से रहा है 1.9.2 – WarmWaffles

+0

मैं पुष्टि कर सकता हूं [यह रूबी 1.8.7 में है] (http://ruby-doc.org/stdlib-1.8.7/libdoc/resolv/rdoc/Resolv/IPv4 .html) – dukedave

1

में अपने स्वयं के प्रतिमान आप निर्माण का उपयोग कर सकते लिखने की घ के रूप में जैक नीचे उल्लेख आप Resolv::IPv4::Regex उपयोग कर सकते हैं अगर आप सबनेट स्वीकार करने की जरूरत नहीं है।

यदि आपको इसे स्वीकार करने की आवश्यकता है, तो activemodel-ipaddr_validator मणि आपकी मदद कर सकता है। (अस्वीकरण: मैं मणि के लेखक हूँ)

validates :your_attr, ipaddr: true 
+0

अच्छी तरह से काम करता है। शायद अस्वीकरण जोड़ने के लायक है कि यह _your_ मणि है। – Shadwell

0

तुम भी Regexy::Web::IPv4 जो भी पोर्ट संख्या के साथ आईपी पतों का मिलान कर सकते हैं का उपयोग कर सकते हैं।

2

आप, साथ ही मानक के पुस्तकालय IPAddr.new कि सबनेट पार्स होगा, IPV6 और अन्य शांत बातें कॉल कर सकते हैं: (IPAddr) और nil वापसी अगर प्रारूप गलत था।

बस कार्य करें:

valid = !(IPAddr.new('192.168.2.0/24') rescue nil).nil? 
#=> true 

valid = !(IPAddr.new('192.168.2.256') rescue nil).nil? 
#=> false 
संबंधित मुद्दे