forked from External/greenlight
30 lines
827 B
Ruby
30 lines
827 B
Ruby
# frozen_string_literal: true
|
|
|
|
class MigrationProduct < ActiveRecord::Base
|
|
self.table_name = :users
|
|
end
|
|
|
|
class SubMigrationProduct < ActiveRecord::Base
|
|
self.table_name = :roles
|
|
end
|
|
|
|
class AddRoleIdToUsers < ActiveRecord::Migration[5.2]
|
|
def change
|
|
reversible do |dir|
|
|
dir.up do
|
|
add_reference :users, :role, index: true
|
|
|
|
MigrationProduct.where(role_id: nil).each do |user|
|
|
highest_role = SubMigrationProduct.joins("INNER JOIN users_roles ON users_roles.role_id = roles.id")
|
|
.where("users_roles.user_id = '#{user.id}'").min_by(&:priority).id
|
|
user.update_attributes(role_id: highest_role) unless highest_role.nil?
|
|
end
|
|
end
|
|
|
|
dir.down do
|
|
remove_reference :users, :role, index: true
|
|
end
|
|
end
|
|
end
|
|
end
|