引用密钥为 ip_address 的哈希
Refer to a hash where the key is an ip_address
我有一个模型需要按 :sending_ip 分组,它是数据库中的 "cidr" 列。
@count_hash = Webhook.group('sending_ip').count
产生这个散列:
{#<IPAddr: IPv4:213.32.165.239/255.255.255.255>=>127000, #<IPAddr: IPv4:153.92.251.118/255.255.255.255>=>228000}
我不知道如何引用这种类型的密钥。以下是我尝试调用这些键的方式的一些示例。全部 return 无或错误。
@count_hash[#<IPAddr: IPv4:213.32.165.239/255.255.255.255>]
@count_hash["#<IPAddr: IPv4:213.32.165.239/255.255.255.255>"]
@count_hash[<IPAddr: IPv4:213.32.165.239/255.255.255.255>]
@count_hash["#<IPAddr: IPv4:213.32.165.239/255.255.255.255>"]
在我的应用程序的其他地方,我有一个效果很好的简单示例。其他示例按 esp 分组,结果为此散列:
{"hotmail"=>1000, "gmail"=>354000}
第二个哈希,我可以轻松参考
@count_hash["gmail"]
得到预期结果354000
如何使用按 sending_ip 分组的先前哈希实现相同的功能?预先感谢您的见解。
这个:
#<IPAddr: IPv4:213.32.165.239/255.255.255.255>
是在 IPAddr
的实例上调用 #inspect
的结果。所以键是 IPAddr
个实例,你可以说:
ip = IPAddr.new('213.32.165.239')
@count_hash[ip]
# 127000
或者您可以迭代散列:
@count_hash.each { |ip, n| ... }
或通过其键:
@count_hash.keys.each { |ip| ... }
取决于您需要做什么。如果更方便的话,您甚至可以将键转换为字符串:
@count_hash = @count_hash.transform_keys(&:to_s)
# or
@count_hash.transform_keys!(&:to_s)
我有一个模型需要按 :sending_ip 分组,它是数据库中的 "cidr" 列。
@count_hash = Webhook.group('sending_ip').count
产生这个散列:
{#<IPAddr: IPv4:213.32.165.239/255.255.255.255>=>127000, #<IPAddr: IPv4:153.92.251.118/255.255.255.255>=>228000}
我不知道如何引用这种类型的密钥。以下是我尝试调用这些键的方式的一些示例。全部 return 无或错误。
@count_hash[#<IPAddr: IPv4:213.32.165.239/255.255.255.255>]
@count_hash["#<IPAddr: IPv4:213.32.165.239/255.255.255.255>"]
@count_hash[<IPAddr: IPv4:213.32.165.239/255.255.255.255>]
@count_hash["#<IPAddr: IPv4:213.32.165.239/255.255.255.255>"]
在我的应用程序的其他地方,我有一个效果很好的简单示例。其他示例按 esp 分组,结果为此散列:
{"hotmail"=>1000, "gmail"=>354000}
第二个哈希,我可以轻松参考
@count_hash["gmail"]
得到预期结果354000
如何使用按 sending_ip 分组的先前哈希实现相同的功能?预先感谢您的见解。
这个:
#<IPAddr: IPv4:213.32.165.239/255.255.255.255>
是在 IPAddr
的实例上调用 #inspect
的结果。所以键是 IPAddr
个实例,你可以说:
ip = IPAddr.new('213.32.165.239')
@count_hash[ip]
# 127000
或者您可以迭代散列:
@count_hash.each { |ip, n| ... }
或通过其键:
@count_hash.keys.each { |ip| ... }
取决于您需要做什么。如果更方便的话,您甚至可以将键转换为字符串:
@count_hash = @count_hash.transform_keys(&:to_s)
# or
@count_hash.transform_keys!(&:to_s)