Sha256: 74f83391fe0bcc6ef1eabdb2c67b0b494bfeaba5286ae69b9ad310512e0c5bba

Contents?: true

Size: 1.48 KB

Versions: 29

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

module BetterRecord
  class PolymorphicOverride
    @@debugging_override = nil

    def self.debug=(val)
      @@debugging_override = !!val
    end

    def self.debug
      !!@@debugging_override
    end

    def self.polymorphic_value(klass, options = nil)
      type_val = nil
      type_method = polymorphic_method(options.presence || {})
      begin
        type_val = klass.__send__(type_method)
      rescue
        puts "Error in Polymorphic Value:",
          type_method, klass, type_val,
          $!.message, $!.backtrace if debug

        if type_val == :table_name_without_schema
          type_val = klass.table_name
        else
          type_val = klass.polymorphic_name
        end
      end
      type_val
    end

    def self.polymorphic_method(options = {})
      (options[:primary_type].presence) || BetterRecord.default_polymorphic_method.presence || :polymorphic_name
    end

    def self.all_types(klass)
      keys = [ :polymorphic_name, :table_name ]
      keys |= [BetterRecord.default_polymorphic_method] if BetterRecord.default_polymorphic_method.present?
      p "Polymorphic methods:", keys if debug
      values = []
      keys.each do |k|
        val = nil
        begin
          val = klass.__send__(k)
          values << val if val.present?
        rescue
          p "Error in Polymorphic Method, #{k}:", $!.message, $!.backtrace if debug
        end
      end
      p "Present Polymorphic Values:", values if debug
      values
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
better_record-0.22.9 lib/better_record/polymorphic_override.rb
better_record-0.22.8 lib/better_record/polymorphic_override.rb
better_record-0.22.7 lib/better_record/polymorphic_override.rb
better_record-0.22.6 lib/better_record/polymorphic_override.rb
better_record-0.22.5 lib/better_record/polymorphic_override.rb
better_record-0.22.4 lib/better_record/polymorphic_override.rb
better_record-0.22.3 lib/better_record/polymorphic_override.rb
better_record-0.21.3 lib/better_record/polymorphic_override.rb
better_record-0.22.2 lib/better_record/polymorphic_override.rb
better_record-0.22.0 lib/better_record/polymorphic_override.rb
better_record-0.21.2 lib/better_record/polymorphic_override.rb
better_record-0.20.2 lib/better_record/polymorphic_override.rb
better_record-0.19.10 lib/better_record/polymorphic_override.rb
better_record-0.19.9 lib/better_record/polymorphic_override.rb
better_record-0.19.8 lib/better_record/polymorphic_override.rb
better_record-0.19.7 lib/better_record/polymorphic_override.rb
better_record-0.19.6 lib/better_record/polymorphic_override.rb
better_record-0.19.4 lib/better_record/polymorphic_override.rb
better_record-0.19.2 lib/better_record/polymorphic_override.rb
better_record-0.19.1 lib/better_record/polymorphic_override.rb