Datamapperを使用して、Paperclip :: Resourceを持つn、:photosを持つモデルアルバムがあります
ActiveRecordがあれば、私は次のようになります。
has_many :photos, dependent: :destroy
私のアルバムモデルでは、アルバムと同時に写真を削除するために、しかしDatamapperを使用すると、自分でロールする必要があるようです。シナトラでは、私が持っているアルバムを削除するには:
delete '/albums/:id' do
a = Album.get params[:id]
a.destroy
redirect '/'
end
アルバムモデルのbeforeフィルター:
before :destroy do
photos.destroy
end
ただし、beforeフィルターが呼び出されることはありません。
bangメソッド、a.destroy!を使用すると、アルバムは破棄されますが、写真は破棄されません。
エラーは発生せず、例外も発生しません。
アップデート
エラーがありますが、エラーハッシュが空です。
INFO -- : #<DataMapper::Validations::ValidationErrors:0x13740dc @resource=#<Album @id=2 @name="Quaver" @created_at=#<DateTime: 2013-02-07T10:30:36+00:00 (5895194251/2400,0/1,2299161)> @updated_at=#<DateTime: 2013-02-07T10:30:36+00:00 (5895194251/2400,0/1,2299161)>>, @errors={}>
明らかに私には検証の問題があります。ただし、モデルに検証を設定していません。
class Photo
include DataMapper::Resource
include Paperclip::Resource
property :id, Serial
property :title, String
property :created_at, DateTime
property :updated_at, DateTime
has_attached_file :data, url: "/:attachment/:id/:style/:basename.:extension",
path: "# {APP_ROOT}/public/:attachment/:id/:style/:basename.:extension"
belongs_to :album
end
class Album
include DataMapper::Resource
property :id, Serial
property :name, String
property :created_at, DateTime
property :updated_at, DateTime
has n, :photos
before :destroy do
photos.destroy
end
end
したがって、ValidationErrorsのためにbeforeフィルターは呼び出されていませんが、明示的に設定されていない場合、それらはどこから取得されますか?
どんな助けでも、ありがたいことに受けました。ありがとう。