paperclipをRails4で動かした

2013/10/21 23:30

Gemfile

まずは使うライブラリを追加

gem "paperclip", "~> 3.0"

generate

そしてモデルとコントローラを作る

bundle exec rails g model Image
bundle exec rails g controller images

Model

class Image < ActiveRecord::Base
  has_attached_file :file, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
end

Controller

# coding: utf-8
class ImagesController < ApplicationController
  def index
    @image = Image.new
    @images = Image.all
  end

  def create
    @image = Image.create(image_params)

    redirect_to images_url
  end

  private
    def image_params
      params.require(:image).permit(:file)
    end

end

View

<%= form_for @image, :url => images_path, :html => { :multipart => true } do |f| %>
  <%= f.file_field :file %>
  <%= f.submit 'アップロード' %>
<% end %>

<% @images.each do |image| %>

<%= image.file.url %>

<%= image_tag image.file.url %> <%= image_tag image.file.url(:medium) %> <%= image_tag image.file.url(:thumb) %>
<% end %>

データベースを作る

class CreateImages < ActiveRecord::Migration
  def change
    create_table :images do |t|
      t.attachment :file

      t.timestamps
    end
  end
end
bundle exec rake db:migrate

ImageMagicを入れる

Macでインストールしました。Mac以外は検証してないです。

brew install imagemagick

さいご

これでデータベースに画像が保存されます。
ImageMagicが入らないといけないので少し環境に依存するところもあるかもしれないですがアップロードした画像がオプション一つでサイズ変更できるのはでかく感じました。
carriewaveとかあるけどpaperclipの方がメジャーなようなのでどんどん使っていきたいです。