1

親レコードに属するレコードを破棄しようとしています。stack level too deepしかし、Rails ではエラーが発生して実行できません。

私のクラス(簡略化)は次のように構築されています:

class Album < ActiveRecord::Base
  has_many :photos, dependent: :destroy
  accepts_nested_attributes_for :photos, reject_if: lambda { |p| p[:image].blank? }

  ...
end

class Photo < ActiveRecord::Base
  belongs_to :album

  mount_uploader :image, PhotoUploader
end

以下を試すと、例外が発生します。

Photo.destroy(12) # where 12 is the ID of the photo I want to destroy
# note that Photo.delete(12) works fine, but doesn't remove the image from the file system

写真を破棄するとこのエラーが発生する理由がわかりません。多分それcarrierwaveはそれと一緒mount_uploaderですか?

編集1:これは間違いなく何かと関係がありcarrierwaveます。私のアップローダには、(スタックが深すぎるまで) 何度も呼び出される次のコードがあります。

def unprocessed_image_filename
  match_data = /^original_(.+)_\d{14}\.\D{3,4}$/.match(File.basename(model.image.to_s))

  match_data ? match_data[1] : "photo"
end

これは、さまざまなバージョンの名前を決定するために使用されます。

4

1 に答える 1

1

myunprocessed_image_filenameを use:model.read_attribute(:image)の代わりに変更model.image.to_sすると、うまくいったようです。

今はさまざまな問題がありますが、少なくとも好きなように写真を破壊できます.

于 2012-10-31T17:09:02.933 に答える