验证消息中的Paperclip文件名

时间:2011-04-21 10:58:28

标签: ruby-on-rails validation file paperclip

以下是我在模型中尝试做的事情:

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 个答案:

答案 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

希望这有帮助。