Upload File to Storage using Cloudinary and Carrierwave

Ghiant Masua Khols
1 min readSep 28, 2018

okay this another my experience in rails.

lets start

put this into gemfile

gem ‘carrierwave’
gem ‘cloudinary’

bundle install

create config/cloudinary, and config ur cloudinary account

# config/cloudinary.yml
development:
cloud_name: "ur cloud name"
api_key: "ur api key"
api_secret: "ur api secret"

production:
cloud_name: "ur cloud name"
api_key: "ur api key"
api_secret: "ur api secret"

oke lets continue

rails g migration AddimageToUser image:string
rake db:migrate

add this to ur user model

# app/models/user.rb
mount_uploader :image, imageUploader

settings our controller

#apps/controller/users_controller.rbdef create
@user = User.new(user_params)
if @user.save
render json: { result: true, msg: ' The image is sucessfully uploaded!!'}, status: :created
else
render json: {result: false, user: @user.errors }, status: :unprocessable_entity
end
end
private
def user_params
params.permit(:name, :image)
end

set routes

#config/routes.rb
...
post 'user/upload' => 'users#create'

set storage

class ImageUploader < CarrierWave::Uploader::Base
...
include Cloudinary::CarrierWave# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# to set where we save our image to Image folder
def public_id
return "Image/" + Cloudinary::Utils.random_public_id
end

add cloudinary.rb to config

Cloudinary.config do |config|
config.cloud_name = ‘ur cloud’
config.api_key = ‘ur key’
config.api_secret = ‘ur secret’
config.secure = true
config.cdn_subdomain = true
end

oke try on postman and enjoy

--

--