Полиморфная перезапись файлов с одинаковыми именами - PullRequest
3 голосов
/ 09 марта 2010

в Rails с использованием Полиморфной версии Paperclip, техника сохранения по умолчанию означает, что файлы с одинаковыми именами перезаписывают друг друга. Включение: id в путь и URL не работает, поскольку он просто перезаписывает предыдущий файл старым: id.

Я пробовал интерполяцию с использованием отметки времени, но она просто смотрит на текущее время при отображении изображения (к тому же, поскольку у меня есть несколько миниатюр, это занимает больше секунды, поэтому изображения имеют разные отметки).

Paperclip.interpolates :uniqueid do |attachment, style|
  Time.now.to_i.to_s
end

Также пытался использовать шестнадцатеричное число, но оно повторяется для каждого большого пальца, таким образом, разрывая его, поскольку каждый раз появляется новое шестнадцатеричное значение.

Paperclip.interpolates :uniqueid do |attachment, style|
  ActiveSupport::SecureRandom.hex(3)
end

Поскольку это Полиморфная версия и, следовательно, имеет свою собственную модель, я не знаю, как получить доступ к значениям из родительской модели (в данном случае «Post»). Изменения в приведенном ниже коде приводят к появлению ошибок «неопределенный метод».

Paperclip.interpolates :user_id do |attachment, style|
  current_user.id
end

Извините, если кажется, что это вопрос новичка, но это хороший документ для традиционного Скрепки, но для Полиморфного разветвления ничего нет.

1 Ответ

0 голосов
/ 26 марта 2012

Как насчет включения :class в :path для has_attached_file?

has_attached_file :attachment,
  :path => ":rails_root/attachments/:class/:id/:attachment/:basename.:extension",
  :url => "downloads/:id/:title.:extension"
...