Domanda

Vorrei non duplicare l'immagine se è la stessa che viene pubblicata,

Come:

  

user1 pubblica un'immagine
  user2 pubblica la stessa immagine

     

2 # immagini nel db

C'è un modo per gestirlo ??

Grazie,

È stato utile?

Soluzione

Per raggiungere questo obiettivo, è necessario suddividere gli allegati nel proprio modello.

Quindi dove probabilmente ora hai

class User < ActiveRecord::Base
   has_attached_file :avatar #plus a bunch of specifications here
end 

Dovresti impostare un nuovo modello e associazioni come

class User < ActiveRecord::Base
   belongs_to :images
end 

class Image < ActiveRecord::Base
   has_many :users
   has_attached_file :avatar
end 

Quindi, nel tuo controller, dovresti farlo

Image.find_or_create_by_avatar_file_name(#filename here)

Quindi ora hai un attributo user.image_id e puoi avere una singola immagine caricata associata a più utenti.

Tuttavia, ho creato un numero di sistemi abbastanza grandi con caricamenti di foto degli utenti (foto di badge, foto di avatar, foto divertenti, qualunque cosa) e l'effettiva sovrapposizione tra gli utenti tende ad essere piuttosto piccola. Inoltre, stai davvero risparmiando denaro su qual è la più economica delle tue risorse: spazio di archiviazione. Non risparmi nulla sui costi della larghezza di banda, sull'elaborazione o sulla complessità programmatica seguendo questa strada.

A meno che questo non sia un insieme davvero unico di circostanze (nel qual caso sarebbe bello sentire cosa stai facendo) Sconsiglierei di seguire questa strada.

Altri suggerimenti

http: / /www.codeproject.com/Messages/2913691/Comparing-one-image-to-many-others-speeded-up.aspx

Lo uso nel mio programma e tutto bene!

Avviso relativo al DB: archivia gli hash nella tabella. e quindi hai solo bisogno di un calcolo hash.

Informazioni sulla velocità

1) Vincola la dimensione dell'immagine 100x100 per esempio

2) Quando l'utente tenta di accedere, viene calcolato l'hash della sua password. penso che gli utenti accederanno più frequentemente quindi aggiorneranno i loro avatar.

Calcola l'hash di ogni immagine mentre viene salvata. Quando un nuovo utente pubblica la stessa immagine, controlla l'hash di quell'immagine e vedi se corrisponde a qualcosa nel database

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top