2

曲をアップロードするRailsアプリケーションがあり、その曲をアセットディレクトリ内の他のすべての曲と比較しようとしています。曲が等しい場合は、アップロードを削除して、すべてのクエリをマスター曲にルーティングします。

マスターソングに多くのユーザーソングのアップロードがあるアソシエーションを作成することを考えていましたが、デフォルトでは、ユーザーアソシエートするマスターソングIDはnilです。アセット内の曲が等しいかどうかを確認するにはどうすればよいですか。また、曲を削除してリクエストをマスター曲にルーティングする方法を教えてください。

これがuser_song_uploadsの私のdbです:

class CreateUserSongUploads < ActiveRecord::Migration
  def change
    create_table :user_song_uploads do |t|
        t.integer :user_id
        t.has_attached_file :song
            :url => "/assets/user_song_uploads/:id/",
            :path =>  "#{rails.root}/assets/user_song_uploads/:id/",
      t.timestamps
      t.string :artist
      t.string :album
      t.string :title
    end
  end
end

私のmaster_songdb:

 t.has_attached_file :m_song
     :url => "/assets/master_songs/:id",
     :path =>  "#{rails.root}/assets/master_songs/:id",

何か案は?どうもありがとう。

4

1 に答える 1

1

ファイルレベルの比較:

ファイルのmd5/sha1チェックサムを作成し、dbに保持します。次のアップロードが来たら、アップロードが終了したら、最初にチェックサムを比較し、同じ場合はリンクします。

これは、ZFSファイルシステムの重複排除に似ています。

于 2012-05-04T02:55:35.090 に答える