|
|
@ -5,7 +5,10 @@ class MediaAttachment < ApplicationRecord |
|
|
|
belongs_to :account, inverse_of: :media_attachments |
|
|
|
belongs_to :status, inverse_of: :media_attachments |
|
|
|
|
|
|
|
has_attached_file :file, styles: -> (f) { f.instance.image? ? { small: '510x680>' } : { small: { convert_options: { output: { vf: 'scale="min(510\, iw):min(680\, ih)":force_original_aspect_ratio=decrease' } }, format: 'png', time: 1 } } }, processors: -> (f) { f.video? ? [:transcoder] : [:thumbnail] } |
|
|
|
has_attached_file :file, |
|
|
|
styles: -> (f) { file_styles f }, |
|
|
|
processors: -> (f) { f.video? ? [:transcoder] : [:thumbnail] }, |
|
|
|
convert_options: { all: "-strip" } |
|
|
|
validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES |
|
|
|
validates_attachment_size :file, less_than: 4.megabytes |
|
|
|
|
|
|
@ -30,4 +33,26 @@ class MediaAttachment < ApplicationRecord |
|
|
|
def type |
|
|
|
image? ? 'image' : 'video' |
|
|
|
end |
|
|
|
|
|
|
|
private |
|
|
|
def self.file_styles(f) |
|
|
|
if f.instance.image? |
|
|
|
{ |
|
|
|
original: '100%', |
|
|
|
small: '510x680>' |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
small: { |
|
|
|
convert_options: { |
|
|
|
output: { |
|
|
|
vf: 'scale="min(510\, iw):min(680\, ih)":force_original_aspect_ratio=decrease' |
|
|
|
} |
|
|
|
}, |
|
|
|
format: 'png', |
|
|
|
time: 1 |
|
|
|
} |
|
|
|
} |
|
|
|
end |
|
|
|
end |
|
|
|
end |