When creating a new record, rails does not use the default DB values that are functions. For example, ``col1 timestamp with time zone not null default NOW().'' Instead, Rails sets col1 to "NULL" on an INSERT and my Postgresql DB complains and fails.
Using magical column names, such as created_at is not an option. I want the DB to set the timestamps, not the Rails application servers.
If Rails would just leave these untouched/unset/nil columns out of the INSERT statement, everything would be fine because the DB would set the values using its defaults. I have tried removing the instance variables using the method remove_instance_variables and have tried removing elements in the attributes hash using attr_accessible, that correspond to the nil columns; nothing works. Also, I don't want to resort to custom SQL queries.
Many people have mentioned this issue on the web, but I cannot find a resolution. Also, at least three tickets, #4540, #2257, #3913, on dev.rubyonrails.org/ticket/ have mentioned this same thing. It seems this issue has been in limbo between fixed and broken.
I have searched through active_record/connection_adapters/postgresql_adapter.rb in my Rails Edge for parsings of "now" (DB function), but came up empty. It seems that the code that fixed this in the tickets I mentioned above was for Rails 1.1. Unfortunately, it looks like this patch was removed recently.
Suggestions and insights will be greatly appreciated.
-pachl