我有一个选择表格所有行的方法,如下所示:
这将返回一个类似于以下的数组:
使用上述信息,我想创建一个类似于以下的哈希值:
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"}
}
}
首先,我的问题是 - 是否可能创建像上面那样的哈希表?在上面的Sequel查询示例中,我有三个对象,它们是三个独立的主机,并且我想将这三个主机添加到:node_status
键中。这是可能的吗?如果那不是一个有效的哈希表,那么替代方案是什么?
其次,这是我尝试过的:
# Initialize the hash
smtp_status_hash = { :node_status: => nil }
我已经用一个node_status
键初始化了smtp_status_hash
哈希表,但我不确定如何嵌套查询结果。
:node_status
中的数组,而不是哈希表。因此,你期望的哈希表无效的唯一原因是你使用了:node_status => {...}
而不是:node_status => [...]
,这会告诉 Ruby 你想要每个节点的键值对,而不仅仅是它们的列表,并且只提供值(或者只提供没有值的键)。 - Simple Lime