Rails 3.1 PaperClip-アップロードされたファイルのフォルダー構造を整理するより良い方法は?
-
26-10-2019 - |
質問
Rails 3.1アプリのファイルを保存するためにPaperClipを使用しています。すべてがパブリックフォルダーに保存されているという事実に少し混乱していますが、すべてが正常に機能します。
私はこの種の構造を持っています:
class Photo < ActiveRecord::Base
belongs_to :photoable, :polymorphic => true
has_attached_file :photo, :styles => { :large => "800x600", :medium => "400x300>", :thumb => "100x100>" }
end
class Project < ActiveRecord::Base
attr_accessible :projectname, :photos_attributes
has_many :photos, :as => :photoable
accepts_nested_attributes_for :photos, :allow_destroy => true
end
明らかに、has_many:photos:as =>:写真もあります。
次に、写真をアップロードすると、public/system/photos/1(または/2など)に保存されます。すべてが正常に機能しますが、それを整理するより良い方法があるのだろうか(フォルダー構造がもう少し読みやすい(ユーザー名、プロジェクト名などがあります)?
また、私が間違っている場合は私を修正しますが、ファイルはパブリックフォルダーではなく資産に移動するはずだと思いましたか?
ありがとう
解決
ユーザーがアップロードするコンテンツは、パブリック/システムフォルダーに移動する必要がありますが、スタイルシート、画像、JavaScriptなどのデザイン要素は、アプリ/アセットに対応するフォルダーに配置する必要があります。
ファイルパスに追加する場合は、デフォルトでサポートされていない追加情報(ユーザー名など)を確認する必要があります。 https://github.com/thoughtbot/paperclip/wiki/interpolations )
他のヒント
これは、has_atached_fileでのパスオプションのためです。 readmeの「ストレージ」セクションをご覧ください。https://github.com/thoughtbot/paperclip
添付ファイルとして割り当てられているファイルは、デフォルトでは、has_attached_fileのパスオプションで指定されたディレクトリに配置されます。デフォルトでは、この場所は次のとおりです。Rails_root/public/system/:attachment/:id/:style/:filename。この場所は、標準のCapistranoの展開では、パブリック/システムディレクトリがアプリの共有ディレクトリにシンプルされているため、展開間で存続するため、選択されました。たとえば、それを使用して、パス、あなたはでファイルを持っているかもしれません