Как я могу сделать значение пути прикрепления Paperclip неизменным? - PullRequest
1 голос
/ 10 января 2011

Подключаемый модуль Rails Paperclip интерполирует путь вложения на основе некоторых динамических пользовательских правил при каждом запросе пути.Это позволяет вам вводить имена / идентификаторы / и т.д.в пути ваших вложений.

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

Мне нужно, чтобы путь был интерполирован только один раз, когда файл сохраняется, затем этот путь сохраняется и возвращается туда после независимо от изменения зависимостей интерполяции.

Ответы [ 2 ]

0 голосов
/ 11 января 2011

мой коллега придумал хорошее решение.он не полностью интегрирован в скрепку, но он эффективен.суть:

  1. с использованием фильтра "before_create" в модели, чтобы сделать снимок всех значений, используемых в пути, которые могут измениться

  2. ссылаясь на эти снэпшот значения из интерполяции пути скрепки (в отличие от фактического источника, который может измениться)

, поэтому ваше определение пути выглядит примерно так:

:path => '.../:snapshotted_name/...'

и код выглядит примерно так:

before_create :snapshot_names # only set once

private

def snapshot_names
  snapshotted_name = customer.name
end
0 голосов
/ 10 января 2011

Я обнаружил проблему.

У меня есть два случая, когда исходные зависимости пути могут измениться

Почему они изменятся?Каковы эти два случая?Что мешает вам придумать схему, по которой они никогда не изменятся?

...