ホーム DoRuby file_fieldで画像をアップ

file_fieldで画像をアップ

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

http://d.hatena.ne.jp/zenpou/:titileにて公開した記事を公開します。

railsで、Resourceというmodelに画像を保存する時、

new_fileというメソッドを使ってデータを保存する様につくったんですが、

そういうとき、file_field :record, :resourceのデータを受け取っても

そのまま代入できないので、その問題に対する対処です。

  alias :resource_old= :resource=
  define_method("resource=") do | value |
    if value.class == ActionController::UploadedTempfile
      resource = Resource.new_file(value, value.original_filename)
      self.send :resource_old= , resource
    elsif value.class == Resource
      self.send :resource_old= , value
    else
      nil
    end
  end

model側からbelongs_toでresourceに連携した後に定義される代入を

オーバーライドしてます。

こうするとパラメータの中身をそのまま出せるので非常に楽です。

記事を共有

最近人気な記事