LoginSignup
14
20

More than 5 years have passed since last update.

CarrierWaveの使い方

Posted at
Gemfile
gem 'carrierwave'
$ bundle install

uploaderを作成

$ rails g uploader image

app/uploaders/image_uploader.rbが作成される

image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
  # リサイズしたり画像形式を変更するのに必要
  # Include RMagick or MiniMagick support:
  # include CarrierWave::RMagick
  # include CarrierWave::MiniMagick

  # 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

  # Provide a default URL as a default if there hasn't been a file uploaded:
  # def default_url(*args)
  #   # For Rails 3.1+ asset pipeline compatibility:
  #   # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
  #
  #   "/images/fallback/" + [version_name, "default.png"].compact.join('_')
  # end

  # Process files as they are uploaded:
  # process scale: [200, 300]
  #
  # def scale(width, height)
  #   # do something
  # end

  # Create different versions of your uploaded files:
  # version :thumb do
  #   process resize_to_fit: [50, 50]
  # end

  # Add a white list of extensions which are allowed to be uploaded.
  # For images you might use something like this:
  # アップロードできる拡張子を制限
  def extension_whitelist
    %w(jpg jpeg gif png)
  end

  # Override the filename of the uploaded files:
  # Avoid using model.id or version_name here, see uploader/store.rb for details.
  def filename
    "something.jpg" if original_filename
  end
end

画像用のカラムを追加
※今回はuserモデルに追加を想定

$ rails g migration add_image_to_user image:string

モデルに追加

user.rb
class User < ApplicationRecord
    mount_uploader :image, ImageUploader
end

permitにimageを追加

controller.rb
:image

入力側

edit.rb
    <%= f.label :顔画像 %>
    <%= f.file_field :image %>

表示側

show.rb
<img src="<%= @user.image %>" width="100">
14
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
20