Sinatraでは、some_object.class.name=="Hash"をテストできました。ここで、送信後、コードが機能するように、それに加えて== "ActiveSupport::HashWithIndifferentAccess"をテストする必要があります。それはなぜですか、そしてその比較が行われるすべての場所を更新する必要がありますか、それとももっと簡単な方法がありますか?ありがとう
質問する
6884 次
1 に答える
21
ActiveSupport :: HashWithIndifferentAccessのドキュメントから:
このクラスには疑わしいセマンティクスがあり、人々がparams['key']の代わりにparams[:key]を記述でき、両方のキーに対して同じ値を取得できるようにするためだけにあります。
つまり、これはハッシュから継承するクラスであり、キーとして記号または文字列を渡し、どちらにも同じ値を返すことができます。
テストを修正(およびクリーンアップ)するには、次を使用できます。
some_object.is_a? Hash
これは、ハッシュまたはハッシュの子孫である場合にtrueを返します。
于 2012-06-20T22:56:15.677 に答える