file_columnを使う

file_columnの使い方をメモ。

model

対象となるテーブルに"image"カラムをstringで作成。
model/pic.rbに下記を追加。

file_column :image, :magick => {
            :versions => {
            :thumb => "100x100>",
            :large => "200x120>"
           }

上記の例では、public/pic/image/id 以下に次のように格納される。※idは数字

※idが"1"、ファイル名が"img.jpg"、イメージサイズが W640,H480の場合

 1
 |   img.jpg(オリジナルサイズ)
 |
 +---large
 |       img.jpg(W100,H75)
 |
 \---thumb
         img.jpg(W160,H120)

アップロード時にリサイズする場合は次のようにmodelを変更する。

file_column :image, :magick => {
            :size => "50x50>"
            :versions => {
            :thumb => "100x100>",
            :large => "200x120>"
           }

これでオリジナルサイズが"size"で指定したサイズになる。
なお、"versions"以下で指定した値より小さい値としても、"versions"には指定したサイズで格納される。

view

アップロードする際は、formで":multipart => true"を指定する。

<% form_for(@pic,:html => { :multipart => true})  do |f| %>

アップロードフォーム

<%= file_column_field "pic", "image" %>

画像表示

<%= image_tag url_for_file_column(product_pictures, "image", "large") %>

"large"はmodelで指定した画像サイズ。省略するとオリジナル画像が表示される。


使い方は以上。一度覚えれば非常に簡単!
画像一覧への追加、選択、他のモデルとの連携の方が意外と労力使うんだよなぁ。