我有两个现有表: 设备具有列inet:ipaddress 网络有一个列inet:cidr
我需要在Devices表上有一个作用域,该作用域仅返回那些IP地址不包含在任何网络中的设备。cidr
注意:postgres具有INET运算符<<以检查CIDR是否包含ipaddress。但这仅处理一个CIDR,而我却拥有整个表。
我需要这样的东西:
class Device
scope :not_in_any_network, -> where("devices.ipaddress NOT IN (?)", Network.select(:cidr))
目标是能够将范围与其他链接起来,例如:
problems = Device.active.not_in_any_network.other_scopes
答案 0 :(得分:0)
我可以使用以下代码获得所需的结果:
i <- 1
while(i <= 514) {
tryCatch({
url <- deputados$uri[i]
api_content <- rawToChar(GET(url)$content)
pessoa_info <- jsonlite::fromJSON(api_content)
pessoa_foto <- pessoa_info$dados$ultimoStatus$urlFoto
download.file(pessoa_foto, basename(pessoa_foto), mode = "wb")
Sys.sleep(0.5)
}, error = function(e) return(NULL)
)
i <- i + 1
}
需要将Network.cidr铸造为TEXT,以避免出现错误“ TypeError:无法引用IPAddr”。
然后我必须将数组转换为inet [],以便<<操作符起作用。