我正在学习Rails,过去的两天里一直在尝试通过使用Paperclip上传视频和图片到同一个模型中。我感觉已经用尽了所有资源来寻找答案,但是没有找到任何有助于我将正确的样式应用于正确的文件类型的东西。
以下是我的Image模型(注意:我从一个Image模型和一个avatar属性开始。我正在扩展它的用途,所以请不要被它的名称所迷惑)。
以下是我的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,如果有什么不清楚的地方,我很乐意澄清和修改。
非常感谢。