Pregunta

Tengo un problema con diferentes usuarios que cargan archivos con el mismo nombre y se sobrescriben con el complemento Polymorphic Paperclip.Lo que me gustaría hacer es inyectar la identificación del usuario actual en la URL/ruta.es posible?¿Sería mejor generar un nombre aleatorio?

Aquí están mis valores actuales de los parámetros :url y :path en active.rb:

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

Lo que me gustaría poder hacer es esto:

:url => "/assets/#{current_users_id}/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/#{current_users_id}/:id/:style/:basename.:extension"
¿Fue útil?

Solución

Utilice interpolaciones de clips:

archivo de configuración/inicializadores/paperclip.rb:

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

tiene_opción_archivo_adjunto:

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

(La sintaxis cambió de Paperclip 2.x a 2.3;:ruta no es necesaria;Utilice la última versión y eche un vistazo a la fuente, está bastante bien documentada).

Otros consejos

Cada vez que veo la palabra al azar y se relaciona con cuerdas, creo GUID. Tal vez se podría trabajar para usted.

para mí que aún no ha bypaperclip.rb trabajo pero funciona de esta manera:

En la clase de modelo:

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"

En caso si usted quiere hacerlo por interpolaciones Paperclip que debe encontrar un camino como éste: en primer lugar encontrar la ruta del archivo joya. escriba esto en su terminal:

$ gem env

A continuación, se le mostrará un camino en "- CAMINOS GEM:" en mi caso se trataba de la ruta:

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

En esta dirección se puede encontrar "paperclip.rb".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top