Forum: Ruby on Rails Can't Save a new object even though the request parameters are correct

Posted by Hillary Hueter (Guest)
on 2013-01-02 10:46
(Received via mailing list)
My form fails with the error Mysql2::Error: Column 'date_of_birth' 
cannot
be null. However the Request Parameters have a value for date_of_birth, 
so
i'm not sure whats going on.
Request:

{"utf8"=>"✓",
 "authenticity_token"=>"3njnNBX4VgoV32kau3OALfhdIP00Bq78we6EKD7OXHo=",
 "pilgrim"=>{"surname"=>"Lorem",
 "first"=>"Ipsum",
 "middle"=>"Lorem",
 "aka"=>"Lorem",
 "title"=>"Mrs. ",
 "address"=>"111 Mockingbird Lane",
 "city"=>"City",
 "state"=>"CA",
 "email"=>"loremipsum@gmail.com",
 "telephone"=>"889-279-2727",
 "nationality"=>"USA",
 "passport_number"=>"123455",
 "expiration"=>"06-15-2015",
 "date_of_birth"=>"06-15-1086",
 "jordan"=>"yes",
 "room"=>"Share",
 "leader"=>"Group Leader",
 "price"=>"4000",
 "deposit"=>"500",
 "trip_id"=>"44",
 "balance"=>"3500"},

"commit"=>"Save"}


Here's a gist with the form and controller code that's causing the 
issue.
https://gist.github.com/4429457
Posted by Dheeraj Kumar (Guest)
on 2013-01-02 10:50
(Received via mailing list)
What is the executed SQL? Look at your development log.

--
Dheeraj Kumar
Posted by Rafi A (Guest)
on 2013-01-02 10:59
(Received via mailing list)
On Wed, Jan 2, 2013 at 1:00 AM, Hillary Hueter <weimar1927@gmail.com> 
wrote:

>  "middle"=>"Lorem",
>  "date_of_birth"=>"06-15-1086",
>
> https://groups.google.com/d/msg/rubyonrails-talk/-....
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
What is the datatype that you have set for the date_of_birth column? If
it's date-time, then you can try convert the string into Date object 
first
and then store the parsed value in database.
Posted by tamouse mailing lists (Guest)
on 2013-01-02 17:45
(Received via mailing list)
On Wed, Jan 2, 2013 at 3:57 AM, Rafi A <rafiglitz@gmail.com> wrote:
>>  "authenticity_token"=>"3njnNBX4VgoV32kau3OALfhdIP00Bq78we6EKD7OXHo=",
>>  "nationality"=>"USA",
>>
>> To unsubscribe from this group, send email to
>> rubyonrails-talk+unsubscribe@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/rubyonrails-talk/-....
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>
> What is the datatype that you have set for the date_of_birth column? If it's
> date-time, then you can try convert the string into Date object first and
> then store the parsed value in database.

Is this valid?

>>  "date_of_birth"=>"06-15-1086",

??
Posted by Hillary Hueter (Guest)
on 2013-01-03 07:35
(Received via mailing list)
It was what i put in. It's probably not entirely valid, but i haven't 
put
that type of validation into the form yet.
Posted by tamouse mailing lists (Guest)
on 2013-01-03 08:08
(Received via mailing list)
On Thu, Jan 3, 2013 at 12:34 AM, Hillary Hueter <weimar1927@gmail.com> 
wrote:
>> >>
>> >>  "first"=>"Ipsum",
>> >>  "expiration"=>"06-15-2015",
>> >>
>> >> To unsubscribe from this group, send email to
>> > and
>> > then store the parsed value in database.
>>
>> Is this valid?
>>
>> >>  "date_of_birth"=>"06-15-1086",
>>
>> ??

What shows up in your log?
Posted by tamouse mailing lists (Guest)
on 2013-01-03 08:30
(Received via mailing list)
On Thu, Jan 3, 2013 at 1:07 AM, tamouse mailing lists
<tamouse.lists@gmail.com> wrote:
>>> > wrote:
>>> >>  "pilgrim"=>{"surname"=>"Lorem",
>>> >>  "passport_number"=>"123455",
>>> >> "commit"=>"Save"}
>>> >> To post to this group, send email to rubyonra...@googlegroups.com.
>>> > date-time, then you can try convert the string into Date object first
>>> > and
>>> > then store the parsed value in database.
>>>
>>> Is this valid?
>>>
>>> >>  "date_of_birth"=>"06-15-1086",
>>>
>>> ??
>
> What shows up in your log?

I'm just curious how it works, and how your model is set up. Entering
a date value of "06-15-1086" into mysql gives a 0 date. Assuming
that's MM-DD-YYYY, mysql needs YYYY-MM-DD unless you do some other
munging. (Plus, I'm curious about a birth year 1000 years ago...)
Posted by weimar (Guest)
on 2013-01-03 09:08
(Received via mailing list)
If i was going to put the date into the correct format, would i do it
within the controller or the model?

On Wed, Jan 2, 2013 at 11:29 PM, tamouse mailing lists <
Posted by Hillary Hueter (Guest)
on 2013-01-03 11:23
(Received via mailing list)
i think this had something to do with the type of the date_of_birth 
column.
I've changed it from datetime to date. and it seems to be working.
Posted by tamouse mailing lists (Guest)
on 2013-01-04 04:25
(Received via mailing list)
On Thu, Jan 3, 2013 at 2:06 AM, weimar <weimar1927@gmail.com> wrote:
> If i was going to put the date into the correct format, would i do it within
> the controller or the model?

If you consider that a valid form of date (which it is), then doing
the manipulation to make it work in the model should go in the model,
notably using a before_save hook.

OTOH, if you accept any sort of string in that field, you will
probably need to validate it's contents before passing it off to the
model, and that should go in the controller.

OTOOH, put it where it makes the most sense to you.
Posted by weimar (Guest)
on 2013-01-04 08:05
(Received via mailing list)
ok. thanks.

On Thu, Jan 3, 2013 at 7:24 PM, tamouse mailing lists <
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.