我希望用户能够使用carrierwave、fog 和Amazon S3 将视频上传到我的rails 站点。(我还没有尝试实现 S3 进行存储,也不是这个问题的主题。)
我的视频模型和模型保存代码需要哪些数据库列才能使用 Carrierwave 成功保存视频文件?
目前我的视频表有以下内容,但我对我真正需要的内容感到困惑。
class CreateVideoTable < ActiveRecord::Migration
def up
create_table :videos do |t|
t.string :video
t.integer :user_id
t.integer :question_id
t.string :youtube_url
t.string :type
t.string :filename
t.string :checksum
t.string :path
t.integer :filesize
t.integer :width
t.integer :height
t.integer :duration
t.integer :bit_rate
t.timestamps
end
add_index :videos, [:user_id, :question_id]
end
def down
remove_index :videos, [:user_id, :question_id]
drop_table :videos
end
end
这是我的视频模型的外观:
class Video < ActiveRecord::Base
attr_accessor :user_id, :question_id, :video, :youtube_url, :type, :filename, :checksum, :path, :filesize, :width, :height, :duration, :bit_rate
belongs_to :question
belongs_to :user
mount_uploader :video, VideoUploader
end
最后是我的carrierwave上传器。
class VideoUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_white_list
%w(ogg ogv 3gp mp4 m4v webm mov m2v 3g2)
# %w(ogg ogv 3gp mp4 m4v webm mov)
end
end