scinote-web/db/migrate/20170809131000_refactor_user_settings.rb

54 lines
2.1 KiB
Ruby
Raw Normal View History

class RefactorUserSettings < ActiveRecord::Migration[5.1]
def up
add_column :users, :settings, :jsonb, default: {}, null: false
User.find_each do |user|
settings = {
time_zone: user['time_zone'],
notifications_settings: {
assignments: user['assignments_notification'],
assignments_email: user['assignments_notification_email'],
recent: user['recent_notification'],
recent_email: user['recent_notification_email'],
system_message_email: user['system_message_notification_email']
}
}
user.update(settings: settings)
end
remove_column :users, :time_zone, :string
remove_column :users, :assignments_notification, :boolean
remove_column :users, :assignments_notification_email, :boolean
remove_column :users, :recent_notification, :boolean
remove_column :users, :recent_notification_email, :boolean
remove_column :users, :system_message_notification_email, :boolean
end
def down
add_column :users, :time_zone, :string, default: false
add_column :users, :assignments_notification, :boolean, default: false
add_column :users, :assignments_notification_email, :boolean, default: false
add_column :users, :recent_notification, :boolean, default: false
add_column :users, :recent_notification_email, :boolean, default: false
add_column :users,
:system_message_notification_email, :boolean, default: false
User.find_each do |user|
user.time_zone = user.settings[:time_zone]
user.assignments_notification =
user.settings[:notifications_settings][:assignments]
user.assignments_notification_email =
user.settings[:notifications_settings][:assignments_email]
user.recent_notification =
user.settings[:notifications_settings][:recent]
user.recent_notification_email =
user.settings[:notifications_settings][:recent_email]
user.system_message_notification_email =
user.settings[:notifications_settings][:system_message_email]
user.save
end
remove_column :users, :settings, :jsonb
end
end