我正在使用group_by返回我想先按键排序的哈希值,然后在该键下输入值。
这是我到目前为止提出的代码。一切正常,但我无法弄清楚在分组后如何对值进行排序。
我有一个方法,'pp_accounts_with_properties'显示我的意图并以正确的顺序打印出所有内容(感谢properties.sort_by!调用)......但似乎我应该能够以某种方式完成此操作'accounts_with_properties'方法。
class ProofList
attr_reader :client
def initialize(client)
@client = client
end
def properties
@client.properties.joins(invoices: [charges: [:charge_credits]])
.where(charge_credits: { approved: false }).uniq
end
def accounts_with_properties
unsorted_accounts_with_properties.sort_by { |account, properties| account[:acct_number] }
end
def unsorted_accounts_with_properties
properties.group_by { |property| property.account }
end
def pp_accounts_with_properties
accounts_with_properties.each do |account, properties|
puts account.name
properties.sort_by! { |p| p[:name] }
properties.each do |property|
puts property.name
end
end
end
end
答案 0 :(得分:1)
你是......
如果是2,为什么?你正在咆哮错误的树。哈希只是键与值的关联,如果你正在做任何,其中键的顺序很重要(除了试图制作一个漂亮/可读的显示),你就要去做< em>某事错误的方式。
查看本文以获得比我更清楚的解释:http://www.rubyinside.com/how-to/ruby-sort-hash