I am new to Datamapper, so please go easy...

Using DM in Sinatra I have two models, Album and Photo; Photo has a file 
attached via paperclip:

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

In my delete '/albums/:id' route:

delete '/albums/:id' do
  a = Album.get params[:id] 
  if a.destroy
    redirect '/'
  else
    logger.info a.errors.inspect
    redirect '/'
  end
end

The errors show that there are validation errors, but there are no errors 
present:

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={}>

I can force the destroy with the bang method, but then it doesn't call the 
before :destroy hook in Album to delete the photos.

I have not set up any validations in my Models, and am truly baffled.

Can anybody shed light on why I am getting ValidationErrors?

Cheers,
Adam

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to datamapper+unsubscr...@googlegroups.com.
To post to this group, send email to datamapper@googlegroups.com.
Visit this group at http://groups.google.com/group/datamapper?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to