mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-12-27 10:14:17 +08:00
53 lines
2.1 KiB
Ruby
53 lines
2.1 KiB
Ruby
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
|