2016-05-18 15 views
0

質問について gem。 検索からLDAP::Entryオブジェクトを返します。それはto_hashと呼ばれる方法を持っています。問題は、それが返すハッシュの値が常に1つの値であっても常に配列であることです。 この動作を変更できるかどうか知っていますか? key -> Arrayの代わりに1つだけの要素がある場合は、key -> Stringのペアが必要です。Ruby LDAP to_hashメソッド

このハッシュを後で処理することは費用がかかることがあります。特に、私の場合はかなり大きいです。

+1

、、カスタマーヘルパーを持つことができます。少なくとも、どの操作が実際に最も多くのCPU時間を費やしているかを調べるには、それをプロファイルする必要があります。提案しているものに大きな欠点があります。つまり、アクセスしている要素が配列であるかどうかを毎回チェックしなければならないことです。これは自由ではありません。 –

+0

それは本当ですが、私は配列を使いたくないので、不要な角かっこのJSONファイルを汚染してしまいます。一般に、値がユニークであることを意味するものはありません。それは多くの混乱を引き起こします。問題は今日まで解決されていません。 – damian

答えて

0

hmmmこれは基本的にLDAPの問題です。LDAP値は配列に格納されます。 簡単な解決策は、私がその要素とそれらの単一要素アレイを交換して、パフォーマンスの問題に非常に役立つだろうという懐疑的だすなわち

def to_my_hash() 
    @ldap_entry.attribute_names.each_with_object({}) do |key, hsh| 
    val_arr = @ldap_entry[name] 
    if val_arr.empty? 
     hsh[key] = nil 
    elsif val_arr.size == 1 
     hsh[key] = val_arr.first 
    else 
     hsh[key] = val_arr 
    end 
    end 
end 
+0

それは私が最後にやったことです:)しかし、ありがとう! – damian