ManageIQ/manageiq

View on GitHub
app/models/mixins/deprecation_mixin.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
94%
module DeprecationMixin
  extend ActiveSupport::Concern

  module ClassMethods
    private

    def deprecate_belongs_to(old_belongs_to, new_belongs_to)
      deprecate_attribute_methods(old_belongs_to, new_belongs_to)
      ["_id", "_id=", "_id?"].each do |suffix|
        define_method(:"#{old_belongs_to}#{suffix}") do |*args|
          args.present? ? send(:"#{new_belongs_to}#{suffix}", *args) : send(:"#{new_belongs_to}#{suffix}")
        end
        Vmdb::Deprecation.deprecate_methods(self, "#{old_belongs_to}#{suffix}" => "#{new_belongs_to}#{suffix}")
      end
      virtual_belongs_to(old_belongs_to)
    end

    def deprecate_attribute(old_attribute, new_attribute, type:)
      deprecate_attribute_methods(old_attribute, new_attribute)
      virtual_attribute(old_attribute, type)
      hide_attribute(old_attribute)
    end

    def deprecate_attribute_methods(old_attribute, new_attribute)
      alias_attribute old_attribute, new_attribute
      ["", "=", "?"].each { |suffix| Vmdb::Deprecation.deprecate_methods(self, "#{old_attribute}#{suffix}" => "#{new_attribute}#{suffix}") }
    end
  end
end