我,從我的表中選擇這樣的所有行的方法:嵌套一個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你想要一個每個節點的鍵/值對,而不僅僅是一個列表,並且只給出值(或者,只給出沒有值的鍵) –