summaryrefslogtreecommitdiff
path: root/db/migrate/20160610201627_migrate_users_notification_level.rb
blob: cd8b505de9f94e9c25ac9996e32e961b19b13379 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class MigrateUsersNotificationLevel < ActiveRecord::Migration
  DOWNTIME = false

  # Migrates only users who changed their default notification level :participating
  # creating a new record on notification settings table

  DOWNTIME = false

  def up
    execute(%Q{
      INSERT INTO notification_settings
      (user_id, level, created_at, updated_at)
      (SELECT id, notification_level, created_at, updated_at FROM users WHERE notification_level != 1)
    })
  end

  # Migrates from notification settings back to user notification_level
  # If no value is found the default level of 1 will be used
  def down
    execute(%Q{
      UPDATE users u SET
      notification_level = COALESCE((SELECT level FROM notification_settings WHERE user_id = u.id AND source_type IS NULL), 1)
    })
  end
end