Yow, no. Wait, yes. You could use a activerecord callback for
before_save to change the IP before writing to the database:
美女扒开双腿露出尿口无内裤图片_强壮公的侵犯让我高潮不断_日本护士吞精囗交gif_性欧美丰满熟妇xxxx性
but there is no callback for retrieval. Ahha, but we can just overwrite
the method in the model:
def ip
self.ip.gsub /2/, '3'
end
Would replace 2s with 3s.
But really, why not just store it as a string? Why do you want to store
it as a number? It isn't a number, it's an IP.
Good luck!
require 'ipaddr'
# INET_ATON
IPAddr.new("192.168.0.10").to_i # => 3232235530
# INET_NTOA
IPAddr.new(3232235530, Socket::AF_INET).to_s # => "192.168.0.10"
HTH
- H
Hi Peer,
You can store the IP as an integer in the database and convert to and
from a string using Ruby. Check out this class:
This seems to work:
class Address < ActiveRecord::Base
require 'IPAddr'
def self.find_by_ip(value)
find :first, :conditions => {:ip => IPAddr.new(value).to_i}
end
# Convert from integer - IPAddr doesn't seem to have this method
def ip
[read_attribute(:ip)].pack("N").unpack("C*").join "."
end
def ip=(value)
write_attribute(:ip, IPAddr.new(value).to_i)
end
end
Hope this helps.
-=nathan