ポリモーフィックな関連付けの種類に応じて、動的なバケット名を作成しようとしています。
私の最初のアプローチは、次のようなことを試みることでした:
class PostImage < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
has_attached_file :image, :styles => { :small => "200x200>", :thumb => "50x50>" },
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:style/:id/:filename",
:bucket => self.imageable_type.to_s
end
新しいオブジェクトを作成しようとすると、次のエラーが発生しました:
NoMethodError: #< Class:0x007fd3fe0b15d8 の未定義のメソッド `imageable_type'
S3のドキュメントでこれを見つけました:
バケット: これは、ファイルを保存する S3 バケットの名前です。バケットは Amazon S3 全体で一意でなければならないことに注意してください。バケットが存在しない場合、Paperclip は作成を試みます。バケット名は補間されません。バケットの名前を実行時に決定したい場合は、バケットを Proc として定義できます。Paperclip は、アタッチメントを唯一の引数としてその Proc を呼び出します。
問題は、ポリモーフィック アソシエーションの名前をバケットの名前として設定するためにこれを機能させる方法がわからないことです。
どんな助けでも大歓迎です。