Collection
とLetter
という2つのモデルがあります。 Collection
には多くのLetter
があり、Letter
は明らかにbelongs_to Collection
です。私は疑問を持っているAWS S3のURL/PATHをPaperclip/Railsで正しく設定する
class Letter < ActiveRecord::Base
belongs_to :collection
has_attached_file :pdf,
:url => "/pdf/:id/:style/:basename.:extension",
:path => "/pdf/:id/:style/:basename.:extension",
:s3_host_name => host_name,
:storage => :s3,
:bucket => ENV['S3_BUCKET_NAME'],
:s3_credentials => {
:access_key_id =>#ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key =>ENV['AWS_SECRET_ACCESS_KEY']
}
validates_attachment :pdf,
:content_type => {
:content_type =>
["application/pdf", "text/plain", /\Aimage\/.*\Z/, "application/msword"]
}
end
についてurl
とhas_attached_file
でpath
属性:
以下は私のLetter.rbファイルです。
パスに文字モデルのIDを設定する代わりに、コレクションのIDを設定したいと思います。また、Letterの属性であるtitle
も入れたいと思います。 @collection
のIDが1であるとしましょう。@collection
は@ letter1と@ letter2を持っています。ファイルをAWS S3に保存すると、/pdf/1(which is collection_id)/:title
に保存します。 url
とpath
にどうすればいいですか?
'config/initializers'ディレクトリに、' paperclip.rb'か何かを作っていますか?補間コードはどこに置くべきですか?なぜなら、 '' style::basename::extension ''は何をしているのか少し説明できますか?なぜか分かりませんが、AWSで' Original'フォルダを作り続けています。 basename.:extension "'? – JoHksi
こんにちは、はい、あなたは、paperclip.rbと呼ばれるスクリプトを作成することができます。論理的には聞こえますが、好きな名前を付けても構いません(interpolations.rbもいい名前です)。私は ':style'、':basename'と ':extension'プロパティに関する答えを更新します。 – Stijnster
完璧な答えをありがとう! – JoHksi