Debugging record not being saved

75 views
Skip to first unread message

manu

unread,
Aug 16, 2012, 6:10:33 PM8/16/12
to datam...@googlegroups.com
Hi folks

I'm building a sinatra app with DataMapper.

One of my models is misbehaving, but I can't figure out what is wrong.

Basically when I try to create a new Mission record, it refuses to save it, but does not give me any kind of error message to help me figure out why.

When I inspect the record/object, all the data I passed to the properties are there, but it doesn't create an @id(=nil) or @created_at(=nil), presumably because it will not create it :/

Any idea how I can draw out some more information?

Here's some info on the model:

class Mission
  include DataMapper::Resource
  
  property :id,         Serial    #auto-increment integer key
  property :numero,     Integer, :required => true
  property :nom,        String,  :required => true
  property :briefing,   Text,    :required => false, :default => "Pas de briefing"
  property :debriefing, Text,    :required => false, :default => "Pas de debriefing"
  property :date_hist,  DateTime,:required => false
  property :created_at,  DateTime
  
  belongs_to :campagne

  has n, :flights
  has n, :avatars, :through => :flights
 
end

I use a seed script to create the record:

m1=Mission.first_or_create(:numero => 5,
                           :nom => 'La Belle Rouge',
                           :briefing => 'test',
                           :debriefing => 'test',
                           :date_hist => 1955)

here's what I get in the console when I run the seed script:

=> [#<Mission @id=nil @numero=5 @nom="La Belle Rouge" @briefing="test" @debriefing="test" @date_hist=1942 @created_at=nil @campagne_id=3 @promotion_avatar_id=nil @promotion_grade_id=nil @reward_avatar_id=nil @reward_decoration_id=nil>]


Is it something about the relationships that HAVE to be created first before I can create a Mission record?

Markus Schirp

unread,
Aug 17, 2012, 3:20:31 AM8/17/12
to datam...@googlegroups.com
Hi,

There is a bug that can cause silent safe failures.

The bug is triggered when trying to save a value where
Property#valid?(value) is false. In the current releases
it fails silently.

Must likely the date_hist property with the value 1955 is
triggering this behavior. You can verify it with using dm-core
from current master branch (it should raise an exception).

Regards,

Markus
> --
> You received this message because you are subscribed to the Google Groups "DataMapper" group.
> To view this discussion on the web visit https://groups.google.com/d/msg/datamapper/-/YqFKy6fe8lEJ.
> To post to this group, send email to datam...@googlegroups.com.
> To unsubscribe from this group, send email to datamapper+...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
>

--
Markus Schirp

Phone: +49 201 / 360 379 14
Fax: +49 201 / 360 379 16
Web: www.seonic.net
Email: m...@seonic.net
Twitter: twitter.com/_m_b_j_
OS-Code: github.com/mbj

Seonic IT-Systems GbR
Anton Shatalov & Markus Schirp
Altendorferstrasse 44
D-45127 Essen

manu

unread,
Aug 17, 2012, 4:23:36 AM8/17/12
to datam...@googlegroups.com
Mmm, I removed date_hist altogether to test, and it hasn't fixed the issue :/

Ted Han

unread,
Aug 17, 2012, 8:54:37 AM8/17/12
to datam...@googlegroups.com
So if you have multiple unsaved objects that you are instructing DataMapper to save at once (say an object, plus some child objects that are attached through a relationship) and the child objects validations fail, and will not save, the whole save will fail, even if the object you're calling save on is valid.  So i'd double check that your relationships are valid as well.

The other possibility is that there are constraints that are setup on the DB that are blocking the save from going through, even though datamapper thinks things are valid.  One thing you could do is check out what sql is generated, or see if there's an error being thrown back.  Using a logger to inspect all of this can be pretty helpful.

To view this discussion on the web visit https://groups.google.com/d/msg/datamapper/-/nluT7YIURm8J.

To post to this group, send email to datam...@googlegroups.com.
To unsubscribe from this group, send email to datamapper+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.



--
Ted Han
DocumentCloud
Investigative Reporters & Editors

manu

unread,
Aug 17, 2012, 9:32:22 AM8/17/12
to datam...@googlegroups.com, t...@documentcloud.org
Thanks Ted

I've been spending all day debugging this, and I can confirm that my relationships are all over the place + I had some legacy columns in my table that should not have been there anymore. Basically it would refuse to save my record because it expected more fields.

It's tough developing a db driven app with only the most basic knowledge of dbs :/

But well I'm learning and making progress, so there's that. And I've managed to save a record at last, although I'm far from out of the woods.

Cheerio, and thanks for all the help.
Reply all
Reply to author
Forward
0 new messages