Module: ActiveRecordExtended::QueryMethods::Inet

Included in:
ActiveRecord::QueryMethods::WhereChain
Defined in:
lib/active_record_extended/query_methods/inet.rb

Instance Method Summary collapse

Instance Method Details

#contained_within(opts, *rest) ⇒ Object



6
7
8
9
10
# File 'lib/active_record_extended/query_methods/inet.rb', line 6

def contained_within(opts, *rest)
  ActiveSupport::Deprecation.warn("#contained_within will soon be deprecated for version 1.0 release. "\
                                  "Please use #inet_contained_within instead.", caller(1))
  inet_contained_within(opts, *rest)
end

#contained_within_or_equals(opts, *rest) ⇒ Object



26
27
28
29
30
# File 'lib/active_record_extended/query_methods/inet.rb', line 26

def contained_within_or_equals(opts, *rest)
  ActiveSupport::Deprecation.warn("#contained_within_or_equals will soon be deprecated for version 1.0 release. "\
                                  "Please use #inet_contained_within_or_equals instead.", caller(1))
  inet_contained_within_or_equals(opts, *rest)
end

#contains_or_equals(opts, *rest) ⇒ Object



47
48
49
50
51
# File 'lib/active_record_extended/query_methods/inet.rb', line 47

def contains_or_equals(opts, *rest)
  ActiveSupport::Deprecation.warn("#contains_or_equals will soon be deprecated for version 1.0 release. "\
                                  "Please use #inet_contains_or_equals instead.", caller(1))
  inet_contains_or_equals(opts, *rest)
end

#inet_contained_within(opts, *rest) ⇒ Object

Finds matching inet column records that fall within a given submasked IP range

Column(inet) << “127.0.0.1/24”

User.where.inet_contained_within(ip: “127.0.0.1/16”)

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" << '127.0.0.1/16'"

User.where.inet_contained_within(ip: IPAddr.new(“192.168.2.0/24”))

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" << '192.168.2.0/24'"


22
23
24
# File 'lib/active_record_extended/query_methods/inet.rb', line 22

def inet_contained_within(opts, *rest)
  substitute_comparisons(opts, rest, Arel::Nodes::Inet::ContainedWithin, "inet_contained_within")
end

#inet_contained_within_or_equals(opts, *rest) ⇒ Object

Finds matching inet column records that fall within a given submasked IP range and also finds records that also contain a submasking field that fall within range too.

Column(inet) <<= “127.0.0.1/24”

User.where.inet_contained_within_or_equals(ip: “127.0.0.1/16”)

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" <<= '127.0.0.44/32'"

User.where.inet_contained_within_or_equals(ip: IPAddr.new(“192.168.2.0/24”))

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" <<= '192.168.2.0/24'"


43
44
45
# File 'lib/active_record_extended/query_methods/inet.rb', line 43

def inet_contained_within_or_equals(opts, *rest)
  substitute_comparisons(opts, rest, Arel::Nodes::Inet::ContainedWithinEquals, "inet_contained_within_or_equals")
end

#inet_contains(opts, *rest) ⇒ Object

Strictly finds records that contain a submask and the supplied IP address falls within its range.

Column(inet) >>= “127.0.0.1”

User.where.inet_contained_within_or_equals(ip: “127.0.255.255”)

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" >> '127.0.255.255'"

User.where.inet_contained_within_or_equals(ip: IPAddr.new(“127.0.0.255”))

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" >> '127.0.0.255/32'"


77
78
79
# File 'lib/active_record_extended/query_methods/inet.rb', line 77

def inet_contains(opts, *rest)
  substitute_comparisons(opts, rest, Arel::Nodes::Contains, "inet_contains")
end

#inet_contains_or_equals(opts, *rest) ⇒ Object

Finds records that contain a submask and the supplied IP address falls within its range.

Column(inet) >>= “127.0.0.1/24”

User.where.inet_contained_within_or_equals(ip: “127.0.255.255”)

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" >>= '127.0.255.255'"

User.where.inet_contained_within_or_equals(ip: IPAddr.new(“127.0.0.255”))

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" >>= '127.0.0.255/32'"


63
64
65
# File 'lib/active_record_extended/query_methods/inet.rb', line 63

def inet_contains_or_equals(opts, *rest)
  substitute_comparisons(opts, rest, Arel::Nodes::Inet::ContainsEquals, "inet_contains_or_equals")
end

#inet_contains_or_is_contained_within(opts, *rest) ⇒ Object

This method is a combination of ‘inet_contains` and `inet_contained_within`

Finds records that are contained within a given submask. And will also find records where their submask is also contains a given IP or IP submask.

Column(inet) && “127.0.0.1/28”

User.where.inet_contains_or_is_contained_by(ip: “127.0.255.255/28”)

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" && '127.0.255.255/28'"

User.where.inet_contains_or_is_contained_by(ip: IPAddr.new(“127.0.0.255”))

#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"ip\" && '127.0.0.255/32'"


94
95
96
97
# File 'lib/active_record_extended/query_methods/inet.rb', line 94

def inet_contains_or_is_contained_within(opts, *rest)
  substitute_comparisons(opts, rest, Arel::Nodes::Inet::ContainsOrContainedWithin,
                         "inet_contains_or_is_contained_within")
end