私はPaperclipを使用して、Rails3の特定のモデルのアップロードされた画像を管理しています。このモデルはbelongs_to
別のモデルです。画像パスにこの関係を反映させたいので、このためのカスタム補間を作成しました。
問題は、belongs_to
オブジェクトの名前も編集できるようにしたいということです。それに応じて、Paperclipでファイルの名前を変更したいと思います。
簡単な例を次に示します。
class Make < ActiveRecord:Base
attr_accessible :name
has_many :models
end
class Model < ActiveRecord:Base
attr_accessible :img, :make, :name
belongs_to :make
has_attached_file :img, :style => { :thumb => "100x100" },
:path => "/cars/:make_name/:name/:style/:hash.png",
:hash_secret => "blabla"
Paperclip.interpolates :make_name do |attachment, style|
attachment.instance.make.name
end
Paperclip.interpolates :name do |attachment, style|
attachment.instance.name
end
end
たとえば、メイクChevrolet
とモデルを作成するとCamaro
、画像パスは次のようになります。/cars/chevrolet/camaro/thumb/my_hash.png
Chevrolet
エントリ名をに変更するとChevy
、Railsはで画像を見つけようとしますが、画像の名前が変更/cars/chevy/camaro/thumb/my_hash.png
されていないため、画像が見つかりません。
エントリの名前が変更されたときに、ペーパークリップにすべての画像パスを更新させるにはどうすればよいですか?
ありがとう!