file_column でイメージファイルの保存ディレクトリを変更する
file_column はイメージファイルをアップロードするときにはとても重宝する。ただ気に入らないのはイメージファイルを public の直下にどんどん保存していくことだ。正確には $RAILSAPP/public/(モデル名)/(カラム名)/(ID) というディレクトリを作ってそこにイメージファイルを保存する。
たとえば、public/images/file_column/(モデル名)/(カラム名)/(ID)/イメージファイルというパスに保存するにはどうすればいいだろうか?
答えは、vendor/plugins/file_column/lib/file_column.rb にある DEFAULT_OPTIONS というハッシュを書き換えればよいらしい。具体的には、次のようにする。
DEFAULT_OPTIONS = { :root_path => File.join(RAILS_ROOT, "public/images/file_column"), :web_root => "images/file_column/", ... }
もちろんソースコードのコメントにあるように、モデルクラスにおいて、
file_column :image, :root_path => File.join(RAILS_ROOT, "public/images/file_column"), :web_root => "images/file_column/"
と指定することもできる。というかこちらが本来の使い方。ただいちいち file_column メソッドを呼び出すたびに指定するのが面倒だったから、私は、プラグイン自体を書き換えてしまった。そこらへんは各自の判断で。