I have the following in a migration: create_table :orders do |t| t.references :cart t.references :user t.float :item_total, :default => 0.0, :null => false t.float :discount, :default => 0.0, :null => false t.float :tax, :default => 0.0, :null => false t.string :shipping_type t.float :shipping_cost, :default => 0.0, :null => false t.float :total, :default => 0.0, :null => false t.string :tracking t.datetime :placed_at, :default => ''0000-00-00 00:00:00'', :null => false t.datetime :shipped_at, :default => ''0000-00-00 00:00:00'', :null => false t.timestamps end But when I look at scheme.rb I see: create_table "orders", :force => true do |t| t.integer "cart_id" t.integer "user_id" t.float "item_total", :default => 0.0, :null => false t.float "discount", :default => 0.0, :null => false t.float "tax", :default => 0.0, :null => false t.string "shipping_type" t.float "shipping_cost", :default => 0.0, :null => false t.float "total", :default => 0.0, :null => false t.string "tracking" t.datetime "placed_at", :null => false t.datetime "shipped_at", :null => false t.datetime "created_at" t.datetime "updated_at" end As you can see, the "default" value did not take. Yet it did for the floats that default to 0.0 When I try to save an object of class order I get errors saying the placed_at and shipped_at can not be null. (Which makes sense giving what I''ve pasted above). How can I make those two fields default to "0000-00-00 00:00:00"? Thanks, Greg --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Sat, May 31, 2008 at 12:06 AM, Greg <gregx999-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> How can I make those two fields default to "0000-00-00 00:00:00"? >The migration might not do it as the migration supports all base databases (mysql, postgres and sqlite3). Mysql and Postgres both can take defaults on a date/time type column, I am not sure on sqlite3, that could be the problem. If you must do this, then you can just do some sql in the migration: sql = "SOME SQL STATEMENT TO SET THE DEFAULT YOU WANT" execute(sql) You can look at http://dev.mysql.com/doc/refman/5.0/en/timestamp.html for mysql or http://www.postgresql.org/docs/8.0/interactive/functions-datetime.html for postgres. Mikel --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
several possible problems here: not sure, but maybe you would need to provide a DateTime object instead of a string. But however, 0000-00-00 isn''t a valid date anyway, since there is neither a month 0 nor such a day. It should be 0000-01-01 -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Well, nothing I''ve tried has worked as far as the migration goes. So now I''m trying in the model. I have: class Order < ActiveRecord::Base before_validation_on_create :assign_dates validates_presence_of :placed_at validates_presence_of :shipped_at private def assign_dates self.placed_at = ''0000-00-00 00:00:00'' self.shipped_at = ''0000-00-00 00:00:00'' end end But when I do a create! action I get: "Validation failed: Shipped at can''t be blank, Placed at can''t be blank" Why aren''t those two values being set before validation occurs? Greg --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> Why aren''t those two values being set before validation occurs?as mentioneb above: 0000-00-00 isn''t a valid date in any case Rails may try to convert this string into a DateTime object with DateTime.parse or something on that line and that will fail for 0000-00-00. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Ok, setting the date to a valid date "2000-01-01 00:00:00" in the "assign_dates" method worked. I guess I''m just so used to dealing with MyPHPAdmin when using PHP - it''s defaults date, datetime and time fields to all zeros and seems to just always treat them as strings. Thanks! Greg --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---