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 メソッドを呼び出すたびに指定するのが面倒だったから、私は、プラグイン自体を書き換えてしまった。そこらへんは各自の判断で。