0

attachment_fu を使用して、ファイルを外部のディレクトリにアップロードしようとしていますRAILS_ROOT。ファイルを保存し~/APP_NAME/uploads/て、公開する前に承認/却下できるようにしたい。に対して次の構成を試しましたhas_attachment

has_attachment  :storage => :file_system,
                :path_prefix => "~/APP_NAME/uploads/",
                :max_size => 5.megabytes

残念ながら、この構成では単に~/APP_NAME/uploads/ディレクトリ構造が に作成されRAILS_ROOTます。ファイルを外部に保存する方法はありますRAILS_ROOTか?

4

2 に答える 2

1

これはおそらく Attachment-Fu の問題ではなく、Ruby がファイル I/O を処理する方法と、Unix でファイルを保存する方法です。

たとえば、アプリが ~/Users/ron/APP_NAME にあるとします。

上記のコードを変更した場合:

:path_prefix => "~/APP_NAME/uploads/"

に:

:path_prefix => "../#{RAILS_ROOT}/uploads"

ファイルは ~/Users/ron/uploads の「uploads」というフォルダーに保存されます。「../」は、現在の Rails ルートの 1 つ上のディレクトリを意味します。2 つ上のディレクトリに移動する場合は、「../../」などになります。

しかし、それは階層的なナビゲーションにしか対応していません。ファイルシステムのハードコーディングされたディレクトリにファイルを保存するように Attachment-Fu に指示したい場合は、"~/Users/ron/APP_NAME/uploads" のようなファイル パスを与えることができますが、ファイル パスでハードコーディングすることに注意してください。この方法は脆弱であり、将来、ファイル ストレージの要件が変更された場合に問題になる可能性があります。

それが役立つことを願っています。

于 2009-09-07T05:14:26.697 に答える
0

相対パス名を使用するよりも自分に合った別の方法を見つけました。full_filenameアタッチメント クラスに呼び出されるメソッドを追加しました。

class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end
于 2009-10-22T05:44:11.763 に答える