使用 Datamapper,我有一个模型 Album,它有 n, :photos 有一个 Paperclip::Resource
使用 ActiveRecord,我将拥有:
has_many :photos, dependent: :destroy
在我的相册模型中,为了在删除相册的同时删除照片,但使用 Datamapper 似乎您必须自己滚动。在 Sinatra 中,要删除我拥有的专辑:
delete '/albums/:id' do
a = Album.get params[:id]
a.destroy
redirect '/'
end
和专辑模型中的前置过滤器:
before :destroy do
photos.destroy
end
但从未调用过之前的过滤器。
如果我使用 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 过滤器,但是当它们没有被显式设置时,它们是从哪里来的呢?
任何帮助,感激不尽。谢谢。