Class: Journeybook::Admin::MediaAssetsController

Inherits:
Journeybook::ApplicationController show all
Defined in:
app/controllers/journeybook/admin/media_assets_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/journeybook/admin/media_assets_controller.rb', line 15

def create
  @media_asset = MediaAsset.new(media_asset_params)
  file = params.dig(:media_asset, :file)

  unless file.respond_to?(:read)
    @media_asset.errors.add(:base, "Image file is required.")
    return render :new, status: :unprocessable_entity
  end

  unless MediaAsset::IMAGE_CONTENT_TYPES.include?(file.content_type.to_s)
    @media_asset.errors.add(:content_type, "must be PNG, JPEG, WebP, GIF, or SVG")
    return render :new, status: :unprocessable_entity
  end

  upload = Journeybook::Storage::S3Client.new.upload(file)
  @media_asset.assign_attributes(upload.to_h)
  @media_asset.title = upload.original_filename if @media_asset.title.blank?

  if @media_asset.save
    redirect_to admin_media_assets_path, notice: "Image uploaded."
  else
    Journeybook::Storage::S3Client.new.delete(upload.storage_key)
    render :new, status: :unprocessable_entity
  end
end

#destroyObject



41
42
43
44
# File 'app/controllers/journeybook/admin/media_assets_controller.rb', line 41

def destroy
  MediaAsset.find(params[:id]).destroy
  redirect_to admin_media_assets_path, notice: "Image deleted."
end

#indexObject



6
7
8
9
# File 'app/controllers/journeybook/admin/media_assets_controller.rb', line 6

def index
  @media_asset = MediaAsset.new
  @media_assets = MediaAsset.order(created_at: :desc)
end

#newObject



11
12
13
# File 'app/controllers/journeybook/admin/media_assets_controller.rb', line 11

def new
  @media_asset = MediaAsset.new
end