Attachment_fu を使用して RAILS ROOT の外部のディレクトリにファイルをアップロードする
-
21-09-2019 - |
質問
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
?
解決 2
私は別の方法スーツ私はより良い相対パス名を使用するよりことがわかりました。私は私の添付ファイルのクラスにfull_filename
というメソッドを追加しました:
class attachment < ActiveRecord::Base
def full_filename
return "/Users/ron/attachments/#{id}.#{file_format}"
end
end
他のヒント
これはおそらく、アタッチメント・フーの問題ではなく、Rubyのハンドルは、ファイルがUNIXで保存されているかI / Oファイルだけでなく、どのようにます。
だから、例えばもし言う、でアプリの生活、〜/ユーザ/ロン/ APP_NAME
あなたは上記のコードを変更する場合:
:path_prefix => "~/APP_NAME/uploads/"
宛先:
:path_prefix => "../#{RAILS_ROOT}/uploads"
ファイルは〜/ユーザ/ロン/アップロードで「アップロード」というフォルダに格納されます。一つのディレクトリ現在のRailsのルート上の「../」を意味します。あなたは2つのディレクトリをアップに行きたい場合は、「../../」こととなりそうでます。
しかし、それだけのアドレス階層ナビゲーション。あなたがあなたのファイルシステム内のハードコードされたディレクトリ内のストアファイルに添付-Fuのを伝えたかった場合は、次のような「〜/ユーザ/ロン/ APP_NAME /アップロード」、それにファイルパスを与えることができるが、ファイルパスに心のハードコードでこれを保ちます方法は脆く、将来の痛みのポイントかもしれないあなたのファイルのストレージ要件の変更が必要があります。
希望に役立ちます。