2011-07-05 9 views
0

オブジェクトの実際の削除が発生する前にいくつか削除しようとしています。 (私はクリップを使用しています) 私はbefore_destroyが私の解決策だと思いました。 私は依存破壊を使いたくありません。paperclipを使用中にbefore_destroyの添付ファイルデータにアクセスできない

class Picture < ActiveRecord::Base 
belongs_to :user 
has_attached_file :image, :styles => {:d800x2400 =>"800x2400>",:d220x150=>"220x150#",:d118x118 => "118x118#",:d60x60=>"60x60#"} 
before_destroy :remove_extras 
after_save : add_extras 

private 
def add_extras 
logger.info " adding extras " 
puts image.url(:d60x60) 
end 
def remove_extras 
logger.info " Removing extras " 
puts image.url(:d60x60) 
end 

今私はある得る出力(&を加えながら、その後削除):

adding extras 
/system/images/186/d60x60/something.png 
deleting extras 
/system/images/d60x60/missing.png 

は、誰かが私がすることができません理由を教えてもらえます(いくつかの理由が)私はこのようなモデルを持っている 適切なURLを取得しますか?あなたはおそらくすでにこれに対する答えを持っていますが、場合にはそうでない

答えて

3

問題は、あなたが「has_attached_file」の部分の前に来るためにあなたの「before_destroy」が必要ということです...それ以外の場合は、ペーパークリップの独自の"before_destroy"が最初に呼び出され、メソッドが呼び出される前にイメージが強制終了されます。

私はこの問題を自分自身に持ち、宣言の順序を変更しました。

関連する問題