以下是我在模型中尝试做的事情:
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>):
答案 0 :(得分:1)
问题是 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"
其中 value 将替换为上传的内容类型
答案 1 :(得分:0)
尝试使用photo_file_name
代替photo.original_file_name
。
有关详细信息,请参阅Method: Paperclip::Attachment#original_filename
希望它有所帮助。
答案 2 :(得分:0)
答案 3 :(得分:0)
尝试使用
self.photo.instance_read(:file_name)
有关Paperclip::Attachment#instance_read
的详细信息,请参阅文档here。
希望这有帮助。