class MigrateEmailUserOptions < ActiveRecord::Migration[5.2] def up # see UserOption.email_level_types # always = 0, only_while_away: 1, never: 2 add_column :user_options, :email_level, :integer, default: 1, null: false add_column :user_options, :email_messages_level, :integer, default: 0, null: false execute <<~SQL UPDATE user_options SET email_level = CASE WHEN email_direct AND email_always THEN 0 WHEN email_direct AND email_always IS NOT TRUE THEN 1 ELSE 2 END, email_messages_level = CASE WHEN email_private_messages THEN 0 ELSE 2 END SQL end def down # See postmigration: 20190312194528_drop_email_user_options_columns.rb end end