<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -6,18 +6,33 @@ class ChangeDatesToDatetimes &lt; ActiveRecord::Migration
     change_column :recurring_todos, :end_date, :datetime
 
     User.all(:include =&gt; [:todos, :recurring_todos]).each do |user|
-      user.todos.each do |todo|
-        todo.update_attribute(:show_from, user.at_midnight(todo.show_from)) unless todo.show_from.nil?
-        todo.update_attribute(:due, user.at_midnight(todo.due)) unless todo.due.nil?
-      end
+      if user.prefs
+        user.todos.each do |todo|
+          todo.update_attribute(:show_from, user.at_midnight(todo.show_from)) unless todo.show_from.nil?
+          todo.update_attribute(:due, user.at_midnight(todo.due)) unless todo.due.nil?
+        end
 
-      user.recurring_todos.each do |todo|
-        todo.update_attribute(:start_from, user.at_midnight(todo.start_from)) unless todo.start_from.nil?
-        todo.update_attribute(:end_date, user.at_midnight(todo.end_date)) unless todo.end_date.nil?
-      end
+        user.recurring_todos.each do |todo|
+          todo.update_attribute(:start_from, user.at_midnight(todo.start_from)) unless todo.start_from.nil?
+          todo.update_attribute(:end_date, user.at_midnight(todo.end_date)) unless todo.end_date.nil?
+        end
+      else # weird...no preferences for this user
+        user.todos.each do |todo|
+          todo.update_attribute(:show_from, at_midnight(todo.show_from)) unless todo.show_from.nil?
+          todo.update_attribute(:due, at_midnight(todo.due)) unless todo.due.nil?
+        end
+
+        user.recurring_todos.each do |todo|
+          todo.update_attribute(:start_from, at_midnight(todo.start_from)) unless todo.start_from.nil?
+          todo.update_attribute(:end_date, at_midnight(todo.end_date)) unless todo.end_date.nil?
+        end
     end
   end
 
+  def at_midnight(date)
+    return Time.zone.local(date.year, date.month, date.day, 0, 0, 0)
+  end
+
   def self.down
     change_column :todos, :show_from, :date
     change_column :todos, :due, :date</diff>
      <filename>db/migrate/042_change_dates_to_datetimes.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1118a582d7bd18c471821126c49bf8b6e000c76d</id>
    </parent>
  </parents>
  <author>
    <name>Eric Allen</name>
    <email>ericpallen@gmail.com</email>
  </author>
  <url>http://github.com/bsag/tracks/commit/24c2b57b4af66176b218f24394421cf4bf8b73f7</url>
  <id>24c2b57b4af66176b218f24394421cf4bf8b73f7</id>
  <committed-date>2008-10-08T08:26:06-07:00</committed-date>
  <authored-date>2008-10-04T10:41:37-07:00</authored-date>
  <message>Make migration 42 more resilient: don't freak out when user has no prefs object</message>
  <tree>f091c564b3b30a41c0ea01f1f1e77a2948b57027</tree>
  <committer>
    <name>Eric Allen</name>
    <email>ericpallen@gmail.com</email>
  </committer>
</commit>
