はじめに
- ActiveRecord のオブジェクトに画像ファイルを添付する gem の Paperclip で、画像の保存先をデータベースにする gem の paperclip_database の導入メモ。
- Paperclip は導入済みで、User モデルの avatar カラムに添付画像情報を入れているものとする。
バージョン
- Rails 4.2
- Paperclip 4.2.1
- paperclip_database 2.3.1
インストール
gem "paperclip_database", "~> 2.0"
bundle install
rails generate paperclip_database:migration User avatar
rake db:migrate
モデルの設定
has_attached_file :avatar, :storage => :database
画像を返すアクションとルートの作成
ルートの作成
- routes.rb で users リソースが定義済みの場合、member でルートの追加
resources :users do
member do
get :avatars
end
end
アクションの作成
- UsersController で paperclip_database のコントローラ拡張ミックスインのインポートと画像返却用のアクション定義メソッドの追記
class UsersController < ApplicationController
include Paperclip::Storage::Database::ControllerClassMethods
downloads_files_for :user, :avatar
テンプレートで画像の呼び出し
- @user.image.url(:style) だと URL エンコード済みの文字列が出てきてしまうので、普通にルート名で URL を指定する。
<% image_tag(images_user_url(@user, :style => :medium)) %>