Имя файла скрепки в сообщении проверки - PullRequest
3 голосов
/ 21 апреля 2011

Вот что я пытаюсь сделать в модели:

has_attached_file :photo, :styles => self.image_sizes, :whiny => false

validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'],
                                :message => I18n.t('paperclip.invalid_image_type', :file => self.photo.original_file_name)

Не могу найти решение, как мне получить имя файла в original_file_name:

NameError (undefined local variable or method `photo_file_name' for #<Class:0xaafb004>):

или

NoMethodError (undefined method `photo' for #<Class:0xb303e7c>): 

Ответы [ 4 ]

1 голос
/ 26 апреля 2011

Проблема в том, что self - это не экземпляр, а Class .

Вы можете использовать загруженный тип контента следующим образом:

validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'],
                            :message => :inclusion

и затем в вашем файле перевода добавьте

activerecord.errors.models.<modelname>.attributes.photo.inclusion: "%{value} is not allowed"

где значение будет заменено типом загруженного контента

0 голосов
/ 02 июля 2012

Попробуйте использовать

self.photo.instance_read(:file_name)

Для получения дополнительной информации о Paperclip::Attachment#instance_read см. Документы здесь .

Надеюсь, это поможет.

0 голосов
/ 21 апреля 2011
0 голосов
/ 21 апреля 2011

Попробуйте photo_file_name вместо photo.original_file_name.

Подробнее об этом см. Метод: Скрепка :: Вложение # original_filename

Надеюсь, это поможет.

...