Je voudrais de ne pas dupliquer l'image si elle est la même qui est affiché,Paperclip - duplication des images
Comme:
USER1 poster une image
USER2 publier la même image2 # images dans le db
Y at-il un moyen de gérer cela ??
Merci,
Je voudrais de ne pas dupliquer l'image si elle est la même qui est affiché,Paperclip - duplication des images
Comme:
USER1 poster une image
USER2 publier la même image2 # images dans le db
Y at-il un moyen de gérer cela ??
Merci,
Pour ce faire, vous devez diviser vos pièces jointes dans leur propre modèle.
Alors, où vous avez probablement maintenant
class User < ActiveRecord::Base
has_attached_file :avatar #plus a bunch of specifications here
end
Vous feriez installer un nouveau modèle et les associations comme
class User < ActiveRecord::Base
belongs_to :images
end
class Image < ActiveRecord::Base
has_many :users
has_attached_file :avatar
end
Ensuite, dans votre contrôleur, vous devez faire
Image.find_or_create_by_avatar_file_name(#filename here)
Vous disposez maintenant d'un attribut user.image_id et vous pouvez associer une seule image à plusieurs utilisateurs. Cependant, j'ai construit un certain nombre de systèmes assez volumineux avec des téléchargements de photos d'utilisateurs (photos de badge, photos d'avatars, images amusantes, peu importe) et le chevauchement réel entre les utilisateurs tend à être assez faible. De plus, vous économisez seulement de l'argent sur ce qui est le moins cher de vos ressources: l'espace de stockage. Vous ne sauvegardez rien sur les coûts de bande passante, le traitement ou la complexité programmatique en suivant cette route.
À moins que ce soit un ensemble de circonstances vraiment unique (dans ce cas, il serait bon d'entendre ce que vous faites), je déconseille d'aller dans cette voie.
oui je peux avoir une seule image téléchargée associée à plusieurs utilisateurs, mais ... comment Je compare une nouvelle image téléchargée avec l'autre? – Mike
J'ai ajouté du code de contrôleur à ma réponse. Vous auriez besoin de trier le nom de fichier téléchargé et peut-être faire une comparaison sur la taille. –
Merci, pour votre réponse complète, vous avez certainement raison -> le stockage est bon marché même avec des milliers de doublons, c'est ok ... – Mike
Calculez le hachage de chaque image lors de son enregistrement. Lorsqu'un utilisateur de nouveaux messages même image, vérifier le hachage de cette image et voir si elle correspond à quelque chose dans la base de données
oui c'est ce que je pensais mais je crains juste de faire un hash sur une image temps avant d'enregistrer serait un peu lent (mais n'a pas essayé) – Mike
http://www.codeproject.com/Messages/2913691/Comparing-one-image-to-many-others-speeded-up.aspx
Je l'utilise dans mon programme et tout va bien!
DB conseils connexes: stocker les hachages dans le tableau. et alors vous avez juste besoin d'un calcul de hachage.
A propos de la vitesse
1) Contraindre taille de l'image 100x100 par exemple
2) Lorsque l'utilisateur essaie de se connecter, hachage de son mot de passe calculé. Je pense que les utilisateurs vont se connecter plus fréquemment, puis mettre à jour leurs avatars.
qui a du sens, je vais essayer que ce soir, Merci – Mike
Juste pour être sûr, mais êtes-vous sûr de vouloir faire cela? Comment un fichier est-il supprimé? Est-il logique que deux utilisateurs créent un lien vers le même fichier? – JRL
J'ai pris des utilisateurs comme exemples mais dans mon cas oui c'est logique, mais tu as raison c'était un peu paresseux c'était juste un peu paresseux pour tout expliquer ^^ – Mike