0

次のようなRuby配列があります。

[
     #<Share _id: 507fd5a8ab432a6a35000006, _type: nil, price: {"cents"=>25535, "currency_iso"=>"USD"}, company_id: "507fcdb8ab432ac733000001", user_id: "507fcb06ab432a7c2e000001">,
     #<Share _id: 507fd5a8ab432a6a35000007, _type: nil, price: {"cents"=>25535, "currency_iso"=>"USD"}, company_id: "507fcdb8ab432ac733000001", user_id: "507fcb06ab432a7c2e000002">
] 

company.symbolキー(これは Mongoid リレーションであり、すべての Share オブジェクトに存在します)でソートするにはどうすればよいので、最終的には次のようなハッシュになります

{
    :appl => [#<Share _id: 507fd5a8ab432a6a35000006, _type: nil, price: {"cents"=>25535, "currency_iso"=>"USD"}, company_id: "507fcdb8ab432ac733000001", user_id: "507fcb06ab432a7c2e000001">]
    :msft => [#<Share _id: 507fd5a8ab432a6a35000007, _type: nil, price: {"cents"=>25535, "currency_iso"=>"USD"}, company_id: "507fcdb8ab432ac733000001", user_id: "507fcb06ab432a7c2e000002">]
}

ここでaaplmsftは、株式で利用できる会社のシンボルですcompany.symbol。これは可能ですか?

4

2 に答える 2

0
hash = {}
shares.each{ |share|
  hash[share.company.symbol] = [] unless hash[share.company.symbol]
  hash[share.company.symbol] << share
}
于 2012-10-18T10:33:24.427 に答える
0

正確には私が尋ねたものではありませんが、私が望んでいたように動作します:

@companies = current_user.shares.map { |s| s.company }.uniq.each do |company|
    puts "#{company.name}: #{company.shares.map { |s| s if s.user == current_user and s.company == company }}"
    # this prints all the shares of every company
end
于 2012-10-18T10:31:08.827 に答える