Sha256: d39dd2590e934e97bd04fee03d1e346c8e3a905b57441fb5d4c7c73dff605a13

Contents?: true

Size: 778 Bytes

Versions: 1

Compression:

Stored size: 778 Bytes

Contents

# Poly Belongs To
# The MIT License (MIT)
# Copyright (C) 2015 by Daniel P. Clark
$: << File.join(File.dirname(__FILE__), "/poly_belongs_to")
require 'poly_belongs_to/version'
require 'active_support/concern'

module PolyBelongsTo
  extend ActiveSupport::Concern

  included do
    def self.pbt
      reflect_on_all_associations(:belongs_to).first.try(:name)
    end
    
    def self.poly?
      !!reflect_on_all_associations(:belongs_to).first.try {|i| i.options[:polymorphic] }
    end
  end
  
  def pbt
    self.class.pbt
  end

  def poly?
    self.class.poly?
  end

  def pbt_id
    val = pbt
    val ? eval("self.#{val}_id") : nil
  end

  def pbt_type
    val = pbt
    val ? eval("self.#{val}_type") : nil
  end

end

ActiveRecord::Base.send(:include, PolyBelongsTo)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
poly_belongs_to-0.1.0 lib/poly_belongs_to.rb