Alp*_*pha 3 file-type ruby-on-rails-3 carrierwave
我正在努力尝试实现一些最初对我来说简单的东西.在使用carrierwave的rails 3.0应用程序的上下文中.用户必须能够下载除.exe文件之外的任何类型的文档.在Carriewave有白名单
def extension_white_list
%w(jpg jpeg gif png)
end
Run Code Online (Sandbox Code Playgroud)
我知道有一个黑名单,在我的情况下它会更容易.无论如何,这不是主要关注点.
对于图像文件我在我的上传器类中设置了2个版本.
version :thumb do
process :resize_to_fit => [50, 50]
end
version :small do
process :resize_to_fit => [125, 125]
end
Run Code Online (Sandbox Code Playgroud)
我不得不承认我对这种语法有点困惑.什么样的ruby代码"版本"定义.我的意思是,它不是一种方法,所以在课堂上是什么?
我试图创建一个方法图像?
def image?
%w(jpg jpeg gif png).include?(filename.extension.to_s)
end
Run Code Online (Sandbox Code Playgroud)
然后从版本代码中调用它以防止在文件不是图像时创建那些版本
version :thumb do
if image?
process :resize_to_fit => [50, 50]
end
end
Run Code Online (Sandbox Code Playgroud)
但是这段代码会引发错误
undefined method `image?' for #<Class:0x000001017274f8>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
谢谢.
kei*_*ley 14
这是你实际上如何做到这一点.当前版本的carrierwave现在支持条件版本处理.查看维基页面https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Do-conditional-processing
要仅为特定类型创建版本,请执行以下操作:
version :thumb, :if => :image? do
process :resize_to_fit => [50, 50]
end
protected
def image?(new_file)
new_file.content_type.include? 'image'
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3525 次 |
最近记录: |