更新した時だけ画像がアップロードされない
前提・実現したいこと
Ruby on Railsでアプリを作っています。
画像を登録できるモデルがあるのですが、一度画像を削除して何もない状態からだと正常に画像を登録できるのですが、
一度画像が登録されている状態で、他の画像に変更しようと更新すると、その画像が消えてしまい、なおかつ新しく
登録したい画像もアップロードされていない状態になります。
いままで幾つかアプリを同様の手順で作成していてこのような状況になったことがなく、以前作成したアプリと何か設定が違うのだと思うのですが、いろいろと設定まわりを見てみたのですが全く治らず困っております。
もしこのあたりが怪しい、など分かりそうな方がいらっしゃいましたら教えていただけますでしょうか。
情報の不足などもあれば追記しますので教えてください。よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ等は特に発生しておりません。
該当のソースコード
コントローラー
class BadgesController < ApplicationController
def create
@badge = Badge.new(badge_params)
if @badge.save
flash[:success] = "新しいバッジを登録しました!"
redirect_to home_path
else
render controller: 'badges', action: 'new'
end
end
def update
@badge = Badge.find(params[:id])
if @badge.update(badge_params)
# 保存に成功した場合はトップページへリダイレクト
flash[:success] = "バッジを編集しました。"
redirect_to home_path
else
# 保存に失敗した場合は編集画面へ戻す
render controller: 'badges', action: 'edit'
end
end
private
def badge_params
params.require(:badge)
.permit(:name, :image, :remove_image, :image_cache)
end
end
DB定義
create_table :badges do |t|
t.string :name
t.string :image
t.boolean :remove_image
t.string :image_cache
t.timestamps
end
uploader.rb
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
if Rails.env.production?
include Cloudinary::CarrierWave
else
storage :file
end
def public_id
model.id
end
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
process :resize_to_fit => [250, 250]
def extension_white_list
%w(jpg jpeg gif png)
end
end
試したこと
開発環境(Cloud9)上で実行すると(Cloudinaryを使用していないからか)正常に画像更新もできます。
Mini Magickが良くないのかと、Mini Magickを一度削除して更新しても、状況は変わらずでした。
Rails4.2.5で作り直してもこれも状況が変わらずでした。
Herokuのアプリを作り直して、Cloudinaryを新しくアドオンで追加し、CLOUDINARY_NAMEやCLOUDINARY_API_KEY等を
改めてHerokuに登録し直してもなおりませんでした。
補足情報(言語/FW/ツール等のバージョンなど)
Ruby on Rails5.0.0.1
Heroku
Cloudinary + CarrierWave + Mini Magickで画像を登録しています。