Rails

2015-10-15, rails ruby

seeds.rbで画像をロード

BLOB型のpictureという名前のフィールドを持っているPostというモデルを想定します。

p = "#{Rails.root}/db/seeds_images/foo.jpg"
Post.create(title: "foo", picture: File.read(p))

ファイルを設置して rake db:seed を走らせればOKです。

ちなみに、画像を表示するアクションとルートの設定は例えば以下のような感じになります。JPGフォーマット決め打ちなので、PNGなども扱う可能性がある場合はもう少し拡張が必要です。

posts_controller.rb
def show_picture
  d = Post.find(params[:id]).picture
  if d
    send_data d, :type => 'image/jpeg', :disposition => "inline"
  else
    raise ActionController::RoutingError.new('Picture not found')
  end
end
config/routes.rb
get 'events/:id/picture' => 'events#show_picture', as: 'events_picture'

参考URL

この記事は役に立ちましたか?