2016-06-30 9 views
-1

ハッシュの抜粋はありますか?レールでハッシュを引き抜く

私は以下のようなハッシュを持っており、次のコマンドを実行しようとしました。私はそれがさまざまなやり方でできることを知っています。しかし、以下のような抜き差し方法がある場合は、私は夢中になります。

hash = {"0"=>{"user_id"=>"1"}, "0"=>{"user_id"=>"2"}} 
hash.pluck("user_id") 
+0

を追加し、それが3またはレール4のレールですか? –

+0

男、誰かが今朝downvote酒宴にあります:P – jaydel

答えて

2

ハッシュにそれを呼び出す:

それともできモンキーパッチのハッシュクラス。

hash = {"0"=>{"user_id"=>"1"}, "1"=>{"user_id"=>"2"}} 
hash.values.map{|h| h['user_id']} # => ["1", "2"] 

必要であれば、あなたもこれを取ると、あなたのpluck方法としてArrayに追加することができます。もちろん、「あなたはできる」「あなたをすべきである」という意味ではありません:)

-1

抜粋は、ActiveRecordsでのみ機能します。

リファレンス - Pluck

+4

私は彼がすでにそれを知っていると確信しています。 –

0

これは

hash.inject([]) do |acc, el| 
    acc << el.last.try(:[], 'user_id').to_i 
    acc 
end 

はここで結果

[38] pry(main)> hash.inject([]){|acc, el| acc << el.last.try(:[], 'user_id').to_i; acc} 
=> [1, 2] 

で動作するはずです。しかし、それはあなたが提供するハッシュのために動作します。その後、

# config/initializers/hash.rb 
class Hash 
    def hash_pluck(key) 
    self.inject([]){|acc, el| acc << el.last.try(:[], key).to_i; acc} 
    end 
end 

そして、あなたができる最善のは簡単mapある

[2] pry(main)> hash.hash_pluck('user_id') 
=> [1, 2] 
+0

「試着」とは何ですか? –

+0

はい、私はそれがルビーではない方法であることを知っています。だから、タグにしたがって我々はrorについて話している。 – retgoat

+0

私はあなたがそれを必要としないことを意味しました。 –

関連する問題