★Active Storageは画像、動画が投稿できる
Active Storageで動画の投稿している記事が少なかったので
carrier waveは使わず、こっちでチャレンジしました!!
❶バリデーションに形式を記述
validates:videoの部分は現状presenseが適用されていない。。
video_type→携帯撮影をする程で作成しているためtypeで指定
video_size→10秒で20MB程の為、一応指定
#app/models/post.rb
class Post < ApplicationRecord
#省略
with_options presence: true do
validates :title
validates :price, format: { with: /\A[-]?[0-9]+(\.[0-9]+)?\z/}
validates_inclusion_of :price, in: 500..5000
validates :video
end
validate :video_type
validate :video_size
private
def video_type
if !video.blob.content_type.in?(%('video/quicktime video/quicktime'))
errors.add(:video, '動画は携帯で撮影したmov形式でアップロードしてください')
end
end
def video_size
if video.blob.byte_size > 20.megabytes
errors.add(:video, "動画を短く撮影し直してください(20MB以内)")
end
end
end
❷ビューファイルにvideoタグを記述
#app/views/posts/index.html.erb
class PostsController < ApplicationController
#省略
<video src=<%= rails_blob_path(post.video) %> type="video/mov", controls></video>