0

このアルゴリズムを高速化できるものはありますか?

このモデル(アーティファクト)のすべてのドキュメントを取得しています。各ドキュメントについて、重複があるかどうかを知りたいので、重複している場合は削除します。

   Artifact.all.to_a.each do |n|
      image = n.image_original
      thumb = n.image_thumbnail
      count_value =  Artifact.where(:image_original => image, 
                         :image_thumbnail => thumb).all.to_a.count
      if count_value > 1
        n.destroy!
      end
    end
4

1 に答える 1

1

uniq次のように Artifacts コレクションでメソッドを呼び出す必要があります。

@all_artifacts = Artifact.all
@distinct_artifacts = @all_artifacts.uniq {|artifact| artifact.image_original}

Criteria#distinctこのように使用できますArtifact.distinct(:image_original)が、これはそのフィールドのみを持つ個別の値のみを返します。

于 2015-02-22T07:55:08.623 に答える