Rails: вопрос о скрепке относительно имен столбцов

У меня есть два сценария использования Paperclip, но я не знаю, как настроить параметры, возможно ли это или даже необходимо. Нужен совет более опытных специалистов по этому вопросу.

Во-первых, у меня есть модель документа для загрузки, например PDF-файлов, которая будет определена:

has_attached_file :document...

Это дало бы мне имена столбцов, такие как @document.document_file_name. В любом случае, вместо этого я мог бы использовать @document.file_name?

Во-вторых, у меня есть Gallery.rb, в которой много Picture.rb. Тот же сценарий и здесь. Могу ли я избежать @picture.picture_file_name? Или это то, что действительно следует упускать из виду с преимуществами, которые дает Скрепка.

Спасибо заранее за любые данные.


person TMB    schedule 07.11.2010    source источник


Ответы (3)


Мое мнение: фактический документ (файл PDF) — это не то же самое, что запись документа (которая включает в себя физический документ и метаданные). Поэтому имеет смысл рассматривать вложение Paperclip как атрибут модели и вызывать его методы после атрибута, а не работать с самой записью модели.

В одном из моих приложений есть модель Document с прикрепленным файлом, и я просто назвал атрибут attachment.

Если это слишком неудобно для вас, вы всегда можете реализовать в модели свои собственные геттеры:

class Document < ActiveRecord::Base
  has_attached_file :attachment    # ... or whatever you are calling it

  def file_name
    self.attachment.file_name
  end

  def file_size
    self.attachment.file_size
  end

  def file_type
    self.attachment.file_type
  end
end
person chris_sutter    schedule 07.11.2010
comment
Спасибо, Крис. Ваше объяснение помогло представить его в перспективе, и поэтому я просто буду использовать значения по умолчанию - не нужно определять дополнительные геттеры. - person TMB; 07.11.2010

Для драгоценного камня Paperclip требуются три атрибута связанного объекта.

  1. attribute_file_name
  2. attribute_file_size
  3. attribute_file_type

attribute конечно, если имя вашего файла и это has_attached_file :attribute файл, который обычно называют картинкой, изображением, чем угодно.

Если вы хотите изменить одно из этих имен, вам нужно будет отредактировать сам драгоценный камень, который кажется сумасшедшим из-за простого изменения имени атрибута :)

person thenengah    schedule 07.11.2010
comment
Спасибо, ваше объяснение помогло мне увидеть Криса более ясно. - person TMB; 07.11.2010

Вот методы, которые мне пришлось создать:

{attribute}_file_name
{attribute}_file_size
{attribute}_content_type
{attribute}_updated_at
person Moxley Stratton    schedule 04.05.2012