あなたが何を求めているのか私には不明です。私の最善の推測は、単一関連ハッシュの配列を考えると、次のようになります。
array = [{:col1 => 'aaa'}, {:col2 => 'bbb'}, {:col3 => 'aaa'}]
ハッシュ値ごとに 1 つのハッシュのみを使用したい場合。つまり、最後のハッシュと最初のハッシュの両方に'aaa'
値があるため、最後のハッシュを削除します。もしそうなら、これは:
array.uniq{|item| item.values.first}
# => [{:col1=>"aaa"}, {:col2=>"bbb"}]
あなたが望むことをします。
私が想像している他の可能性は、次のような配列が与えられたということです:
array2 = [{:col1 => 'a', :col2 => 'b', :col3 => 'c', :col4 => 'x'},
{:col1 => 'd', :col2 => 'b', :col3 => 'c', :col4 => 'y'},
{:col1 => 'a', :col2 => 'b', :col3 => 'c', :col4 => 'z'}]
:col1
、:col2
、および:col3
の値が最初のハッシュと同じであるため、最後のハッシュを除外したいと考えています。もしそうなら、これは:
array2.uniq{|item| [item[:col1], item[:col2], item[:col3]]}
# => [{:col1=>"a", :col2=>"b", :col3=>"c", :col4=>"x"},
# {:col1=>"d", :col2=>"b", :col3=>"c", :col4=>"y"}]
あなたが望むことをします。
これらの推測のどちらも実際に探しているものではない場合は、求めているものを明確にする必要があります。できれば、サンプル入力と目的の出力を含めてください。
また、提示されていない多くの要因によっては、データベース クエリ レベルで目的を達成できる可能性が十分にあることも指摘しておきます。