Upload File to Storage using Cloudinary and Carrierwave
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
endprivate
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