【发布时间】:2015-04-30 23:05:39
【问题描述】:
我正在学习 rails,过去两天我一直在试图弄清楚如何使用回形针通过同一模型上传视频和图像。我觉得我已经用尽了我的资源来寻找答案,但没有找到任何似乎可以帮助我将正确的样式应用于正确的文件类型的东西。
这是我的 Image 模型(注意:我从 Image 模型和 avatar 属性开始。我正在扩展它的用途,所以请不要对它的命名方式感到困惑)
class Image < ActiveRecord::Base
belongs_to :imageable, polymorphic: true
has_attached_file :avatar,
if: :is_image_type?, styles: {:large => "750x750>", :medium => "300x300#", :thumb => "100x100#" }, :default_url => "no_image.png",
if: :is_video_type?, :styles => {
:medium => { :geometry => "640x480", :format => 'flv' },
:thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10 }
}, :processors => [:transcoder]
validates_attachment_content_type :avatar,
:content_type => ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', "video/mp4", "video/m4v", "video/mpeg"]
def is_image_type?
content_type = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif']
# /\Aimage\/.*\Z/
end
def is_video_type?
content_type = ["video/mp4", "video/m4v", "video/mpeg"]
end
end
基本上我正在尝试弄清楚如何让样式适用于其适当的文件类型。如果是视频,我希望它被设置为视频,如果是图像,则作为图像。
内容验证工作正常,一旦工作正常,我将对其进行更改以包含所有图像格式和所有视频格式。
目标 总而言之,我的目标是能够拥有一个文件上传字段,用户可以在其中上传多个文件和多种文件类型,包括图像、视频、音频、pdf 和其他文件类型。
然后我将使用“content_type”字段来提取我想在网站不同区域显示的文件类型。
如果这种仅使用一个模型的方法似乎不合适,请指出更好的方法。
我正在使用“paperclip-av-transcoder” gem 来处理视频。
再次,我正在学习 Rails,所以如果有不清楚的地方,我很乐意澄清和修改。
非常感谢。
【问题讨论】: