0

データベースクエリからの値のハッシュがあります:

a1 = {:a => 1, :b => 2 }

そして、サードパーティライブラリの値の別のハッシュ:

b1 = {'a' => 1, 'b' => 2 }

に相当するものがあるa1かどうかを確認したいと思います。それはどのように行われますか?で、から不足しているキーがあるかどうかを確認できます。'a':ab1a1

私が欲しいのは、キーをキー'a'と同じように扱うことです:a

4

3 に答える 3

2

使用できますto_sym

a.has_key?('a'.to_sym)
于 2012-07-13T01:54:50.653 に答える
2

ハッシュを指定すると、いくつかのオプションがありますh

  • すべてのキーを文字列に変換できます。

    Hash[h.map { |k, v| [k.to_s, v] }]
    
  • すべてのキーを記号に変換できます。

    Hash[h.map { |k, v| [k.to_sym, v] }]
    
  • ActiveSupport(Railsに無料で付属)から提供されるHashWithIndifferentAccessを使用できます。

    HashWithIndifferentAccess.new(h)
    
于 2012-07-13T02:28:30.053 に答える
0

b1これにより、(シンボルキーとして)存在しない(文字列)キーの配列が次の場所に表示されa1ます。

b1.keys - a1.keys.map { |key| key.to_s }

その後、次のことができます。

missing = b1.keys - a1.keys.map { |key| key.to_s }
missing.each do |key|
    a1[key.to_sym] = b1[key]
end

これは、常に文字列キーのみがあり、からキーと値のペアが欠落b1していることだけを心配していることを前提としています。目標は、欠落しているペアを(シンボルキーを使用して)に挿入することです。これらはすべて、質問から正しいように聞こえます。これらの仮定のいずれかが誤りである場合、これは少なくともあなたが始めるのに役立つはずです。a1b1a1

于 2012-07-13T02:11:56.187 に答える