Sha256: efdd011b9790bc4fe2024927387a62a913493dbbdc690d9aa9e4a43d149de875

Contents?: true

Size: 1.3 KB

Versions: 60

Compression:

Stored size: 1.3 KB

Contents

class RenameBookmarksController < ActiveRecord::Migration[5.2]
  def up
    original_controller = 'foreman_tasks_tasks'
    original_bookmarks = Bookmark.where(controller: original_controller)
    original_bookmarks_names = Hash[original_bookmarks.pluck(:name, :id)]

    new_controller = 'foreman_tasks/tasks'
    new_bookmarks = Bookmark.where(controller: new_controller)
    new_bookmarks.find_each do |new_bookmark|
      name = new_bookmark.name
      is_name_taken = original_bookmarks_names.key? name

      if is_name_taken
        original_bookmark = original_bookmarks.find(original_bookmarks_names[name])
        is_duplicated = original_bookmark.query == new_bookmark.query &&
                        original_bookmark.owner_id == new_bookmark.owner_id &&
                        original_bookmark.owner_type == new_bookmark.owner_type &&
                        original_bookmark.public == new_bookmark.public

        if is_duplicated
          original_bookmark.destroy
        else
          modified_name = "#{name}_#{generate_token}"
          original_bookmark.update(name: modified_name)
        end
      end
      # Revert to the original controller name
      new_bookmark.update(controller: original_controller)
    end
  end

  def generate_token
    SecureRandom.base64(5).gsub(/[^0-9a-z ]/i, '')
  end
end

Version data entries

60 entries across 60 versions & 1 rubygems

Version Path
foreman-tasks-10.0.2 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-10.0.1 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-10.0.0 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.2.3 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.2.2 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.2.1 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.2.0 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.1.1 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.0.4 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.1.0 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.0.2 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.0.1 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.3.3 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-9.0.0 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.2.1 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.1.4 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.3.2 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.3.1 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.1.3 db/migrate/20200517215015_rename_bookmarks_controller.rb
foreman-tasks-8.3.0 db/migrate/20200517215015_rename_bookmarks_controller.rb