Question

Je suis en cours d'exécution dans un problème avec les différents utilisateurs de télécharger des fichiers avec le même nom peuvent être écrasées avec le Polymorphe de forme de Trombone plugin.Ce que je voudrais faire est d'injecter le courant ID de l'utilisateur dans l'URL/chemin d'accès.Est-ce possible?Serais-je mieux de générer un nom aléatoire?

Voici ma situation actuelle :l'url et le chemin des valeurs de paramètre de l'actif.rb:

:url => "/assets/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/:id/:style/:basename.:extension"

Ce que j'aimerais être capable de faire est ceci:

:url => "/assets/#{current_users_id}/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/#{current_users_id}/:id/:style/:basename.:extension"
Était-ce utile?

La solution

Utilisez un Trombone, des interpolations:

fichier config/initializers/trombone.rb:

module Paperclip
  module Interpolations
    def user_id(attachment, style)
      current_user.id
    end
  end
end

has_ attached_file option:

:url => "/assets/:user_id/:id/:style/:filename"

(La syntaxe a changé à partir d'un Trombone, 2.x 2.3;:chemin d'accès n'est pas nécessaire;L'utilisation de la dernière version et ont un look à la source, c'est assez bien documenté.)

Autres conseils

Chaque fois que je vois le mot hasard et elle se rapporte à des chaînes, je pense que GUID. Peut-être qu'ils pourraient travailler pour vous.

pour moi ce bypaperclip.rb de travail na pas, mais cela fonctionne comme ceci:

Dans la classe modèle:

class Micropost < ApplicationRecord
  Paperclip.interpolates :user_id do |attachment, style|
    attachment.instance.user_id
  end

 has_attached_file  :pic1, 
    :url => "/Microposts/:user_id/:style/:basename.:extension"

Dans le cas si vous voulez le faire par interpolations Paperclip vous devriez trouver un chemin comme celui-ci: d'abord trouver le chemin du fichier de pierres précieuses. entrez dans votre terminal:

$ gem env

Ensuite, il vous montrera un chemin dans « - GEM CHEMINS: » ce fut dans mon cas le chemin:

:/usr/local/lib/ruby/gems/2.4.0/gems/paperclip-5.0.0/lib/paperclip

Dans ce sens, vous pouvez trouver « paperclip.rb ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top