OSDN Git Service

Correctly update all mail_notification options. #6549
authorEric Davis <edavis@littlestreamsoftware.com>
Sun, 10 Oct 2010 21:17:15 +0000 (21:17 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Sun, 10 Oct 2010 21:17:15 +0000 (21:17 +0000)
* Need to check for 't' values to support sqlite
* Need to check the membership count for the 'selected' option

Based on patch contributed by Felix Schäfer

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4246 e93f8b46-1217-0410-a6f0-8f06a7374b81

db/migrate/20100129193813_update_mail_notification_values.rb

index bfe0a59..35ad917 100644 (file)
@@ -1,8 +1,22 @@
 # Patch the data from a boolean change.
 class UpdateMailNotificationValues < ActiveRecord::Migration
   def self.up
-    User.update_all("mail_notification = 'all'", "mail_notification = '1'")
-    User.update_all("mail_notification = 'only_my_events'", "mail_notification = '0'")
+    User.record_timestamps = false
+    User.all.each do |u|
+      u.mail_notification = if u.mail_notification =~ /\A(1|t)\z/
+                              # User set for all email (t is for sqlite)
+                              'all'
+                            else
+                              # User wants to recieve notifications on specific projects?
+                              if u.memberships.count(:conditions => {:mail_notification => true}) > 0
+                                'selected'
+                              else
+                                'only_my_events'
+                              end
+                            end
+      u.save!
+    end
+    User.record_timestamps = true
   end
 
   def self.down