datetime field inserted is NULL when value is assigned to model object

This is pretty baffling. I have the following model object:

create_table "activities", :force => true do |t|
    t.integer "user_id", :limit => 11
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer "location_id", :limit => 11
    t.datetime "event_date"
end

model/activity.rb:

class Activity < ActiveRecord::Base

  belongs_to :User
  belongs_to :Location

  attr_accessor :event_date
  attr_accessor :user
  attr_accessor :location

end

my activities_controller.rb:

    activity = Activity.new(params[:activity])

    activity.event_date = Date.today

    activity.user_id = current_user.id

    activity.save

It throws an error b/c it's trying to insert NULL for event_date in the
MYSQL database:
ActiveRecord::StatementInvalid (Mysql::Error: Column 'event_date' cannot
be null: INSERT INTO `activities` (`update\
d_at`, `location_id`, `user_id`, `event_date`, `created_at`)
VALUES('2008-07-30 05:16:00', 1, 1, NULL, '2008-07-30 \
05:16:00')):

I have no idea why. If I explicitly print out 'activity.event_date.to_s'
is gives me the date of today.

If I remove the stipulation the "event_date" can be NULL it just insert
a NULL value.

thanks in advance for help

Quoting Allen Walker <auswalk@gmail.com>:

This is pretty baffling. I have the following model object:

create_table "activities", :force => true do |t|
    t.integer "user_id", :limit => 11
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer "location_id", :limit => 11
    t.datetime "event_date"
end

model/activity.rb:

class Activity < ActiveRecord::Base

  belongs_to :User
  belongs_to :Location

  attr_accessor :event_date
  attr_accessor :user
  attr_accessor :location

end

my activities_controller.rb:

    activity = Activity.new(params[:activity])

    activity.event_date = Date.today

    activity.user_id = current_user.id

    activity.save

It throws an error b/c it's trying to insert NULL for event_date in the
MYSQL database:
ActiveRecord::StatementInvalid (Mysql::Error: Column 'event_date' cannot
be null: INSERT INTO `activities` (`update\
d_at`, `location_id`, `user_id`, `event_date`, `created_at`)
VALUES('2008-07-30 05:16:00', 1, 1, NULL, '2008-07-30 \
05:16:00')):

I have no idea why. If I explicitly print out 'activity.event_date.to_s'
is gives me the date of today.

If I remove the stipulation the "event_date" can be NULL it just insert
a NULL value.

thanks in advance for help

datetime is a Time, not a Date. Try activity.event_date = Time.now.

HTH,
  Jeffrey