初めに
ここでは画像のアップロード機能を実装するためのgemの紹介をします。
paperclipをインストール
まずはimagemagickが無いと何も始まらないのでこれをインストールする。
ターミナル
brew install imagemagick
Gemfile
gem ‘paperclip'
$ bundle
画像用のカラムを追加
今回はユーザーのプロフ画像に使用したいのでUserモデルを使う。
ターミナル
$ rails g paperclip user avatar
# userはモデル名
# avatarは追加したいカラム名
このコマンドを使うとavatar以外にavatarのfile名や画像を追加した日など4つ程のカラムが作成される。
Userモデル
user.rb
class User < ActiveRecord::Base
has_attached_file :avatar,
styles: { medium: "300x300>", thumb: "100x100>" },
default_url: "/images/:style/missing.png"
validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\z/
end
・has_attached_fileは画像のサイズやデフォルト画像、画像ファイルの保存先などを設定するオプション
・ validates_attachment_content_typeは画像の種類のバリデーションを設定するオプション
確認してみる
$ rails c
# ユーザーモデルのインスタンスを生成
> user = User.new
# avatarの設定
> user.avatar = File.new("app/assets/images/画像ファイル名", "r")
# 設定されているか確認
> p user.avatar