[Ruby on Rails 4] CarrierWave を利用して画像をアップロードする form もしくは API を作成する

いろいろ調べたので memo.

リンク先に重複あり。

公式

一通り実装した後に、refile という後継があることを知った。
次の機会があれば使うかも。

Form の作成手順

アップローダーとモデルの紐付け、ビューへの追記など全般。

bin/rails g uploader foo でアップローダーを作成する。
紐付けたいモデルに mount_uploader :foo, FooUploader を追加する。

親子関係のフォーム

次の機会に Simple_form を使うことにする。

ファイル名の変更

ユニークなファイル名を付けたい場合に、時間を使うとファイルを見失う。

画像のリサイズ

bin/rails g で生成されたアップローダーに設定を加えることで対応できる。

画像の削除

form で f.file_field :image としたら、f.check_box :remove_image という形式。
コントローラの params にも :remove_image を忘れずに追加する。
upload ディレクトリのファイルが削除され、レコードのカラムが null となる。
レコードごと削除したい場合は、_destroy を利用する。

バリデーション

テスト

思い通りにかけないので Everyday Rails – RSpecによるRailsテスト入門 を読む。

API の作成手順

全般。

API のバージョンやネームスペースの管理をしたい場合、こちらが参考になりそう。

テスト

API のテスト全般。

補遺

パーフェクトRuby on Rails で CarrierWave が紹介されている模様。

パーフェクトRuby on Rails
技術評論社 (2014-10-31)
売り上げランキング: 50,036