0

ペーパークリッププラグインを使用したいのですが、ドキュメントでストレージのパスを変更する方法を確認しました。

モデル(および同じレベルのディレクトリ)には何千ものアイテムがあるので、idが32768の場合、たとえば次のように、:idをフォーマット(および展開)して何かを実行する方法を知りたいです。

:path => ":rails_root/public/system/:class/:attachment/3/2/7/6/8/:style/:basename.:extension"

:idを分解して、ペーパークリップに新しいパスを送信するための最良の方法は何ですか?

4

2 に答える 2

2

Paperclip::Interpolationsを使用します。展開されたIDを使用するカスタム補間を作成できます。まず、パスでカスタム補間を使用する必要があります。

 :path => ":rails_root/public/system/:class/:attachment/:exploded_id/:style/:filename"

次に、次のようにモデルに定義を追加します。

Paperclip.interpolates :exploded_id do |attachment, style|
  attachment.instance.exploded_id
end

そして、IDを分解するためのメソッド:

def exploded_id
  self.id.to_s.scan(/./).join('/')
end
于 2012-04-25T21:57:40.287 に答える
1

Paperclipは、フォルダ構造を処理するための組み込みの方法を提供します。

:path => ":rails_root/public/system/:class/:attachment/:id_partition/:style/:basename.:extension"

これにより、ディレクトリ構造が得られます

.../:attachment/000/032/768/:style/...

これは要求されたフォルダ形式を使用しませんが、おそらくより効率的です。

ボーナス

既存のフォルダー構造からこのIDパーティション構造に変換する場合は、フォルダーを移動するこのRubyスクリプトを確認してください。念のため、実行する前にサーバー上のダミーフォルダでテストを行ってください。

于 2012-08-14T09:40:57.863 に答える