Help us understand the problem. What is going on with this article?

CarrierWaveの使い方

More than 1 year has passed since last update.
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">
chokosuki4400
仕事では主にHTMLやCSS、Javascriptなどのフロントエンドを担当してます。最近ではRuby on Rails、Pythonなどバックエンドの業務にも挑戦中。 「最新のWEBサービスやアプリのサイトリンク集」を個人で開発したので良かった是非ご覧くださいmm
https://suuuuuumary.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away