我,从我的表中选择这样的所有行的方法:嵌套一个Ruby散列
smtp_status_raw = my_table.select(:message, :is_valid, :hostname).map { |h| h.values }
这将返回数组是这样的:
[{:message=>"blah", :is_valid=>true, :hostname=>"1"}, {:message=>"blah", :is_valid=>true, :hostname=>"2"}, {:message=>"blah", :is_valid=>true, :hostname=>"3}]
使用以上信息,我要创建一个哈希看起来像这样:
{
:node_status =>
{
{:hostname => "1", :message: "blah"},
{:hostname => "2", :message: "blah"},
{:hostname => "3", :message: "blah"}
}
}
首先,我的问题 - 是否有可能创造像AB哈希奥雅纳?在上面的示例Sequel查询中,我有三个对象,它们是三个独立的主机,我想将这三个主机添加到:node_status
密钥中。那可能吗?如果这不是一个有效的散列,那么有什么选择?
其次,这是我已经试过:
# Initialize the hash
smtp_status_hash = { :node_status: => nil }
我与它node_status
钥匙初始化smtp_status_hash
哈希,但我不知道如何嵌套查询结果..
非常感谢你为这个可笑的好答案! – theGreenCabbage
嘿简单。你能解释一下我的问题中的“期望”散列与你例子中的第一个散列之间的区别吗?看来你把它变成了一个数组,对吧? – theGreenCabbage
是的,它只是嵌套在':node_status'中的数组而不是散列。所以你想要的散列不是有效的散列的唯一原因是你有':node_status => {...}'而不是':node_status => [...]'这会告诉Ruby你想要一个每个节点的键/值对,而不仅仅是一个列表,并且只给出值(或者,只给出没有值的键) –