【发布时间】:2013-01-22 07:23:22
【问题描述】:
使用 Datamapper,我有一个模型相册,它有 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 过滤器,但是当它们没有显式设置时,它们是从哪里来的?
任何帮助,感激不尽。谢谢。
【问题讨论】:
-
嗨,马特。是的,我有;但我真的很想理解为什么这里甚至没有调用 before 过滤器。这是一个学习练习。不过还是谢谢。
标签: sinatra datamapper