その他
    ホーム 技術発信 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に連携した後に定義される代入を

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

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

    記事を共有