Sha256: a6eb0913b3e53532d550065b5c2c04d2fe3147e840593a27b7aaa738fe5b4958

Contents?: true

Size: 874 Bytes

Versions: 61

Compression:

Stored size: 874 Bytes

Contents

module Dorsale
  module PolymorphicId
    module ClassMethods
      def polymorphic_id_for(relation_name)
        module_src = File.read(__FILE__).split("__END__").last
        module_src = module_src.gsub("relation", relation_name.to_s)
        send :include, eval(module_src)
      end
    end

    def self.included(model)
      model.send(:extend, Dorsale::PolymorphicId::ClassMethods)
    end

    def guid
      return nil if new_record?

      "#{self.class}-#{self.id}"
    end
  end
end

ActiveRecord::Base.send(:include, Dorsale::PolymorphicId)

# __END__

Module.new do
  def relation_guid
    return nil if relation_type.blank? || relation_id.blank?

    "#{relation_type}-#{relation_id}"
  end

  def relation_guid=(guid)
    return self.relation = nil if guid.blank?

    type, id      = guid.split("-")
    self.relation = type.constantize.find(id)
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
dorsale-3.0.3 lib/dorsale/polymorphic_id.rb
dorsale-3.0.2 lib/dorsale/polymorphic_id.rb
dorsale-3.0.1 lib/dorsale/polymorphic_id.rb
dorsale-3.0.0 lib/dorsale/polymorphic_id.rb
dorsale-2.7.3 lib/dorsale/polymorphic_id.rb
dorsale-2.7.2 lib/dorsale/polymorphic_id.rb
dorsale-2.7.1 lib/dorsale/polymorphic_id.rb
dorsale-2.7.0 lib/dorsale/polymorphic_id.rb
dorsale-2.6.8 lib/dorsale/polymorphic_id.rb
dorsale-2.6.7 lib/dorsale/polymorphic_id.rb
dorsale-2.6.6 lib/dorsale/polymorphic_id.rb
dorsale-2.6.5 lib/dorsale/polymorphic_id.rb
dorsale-2.6.4 lib/dorsale/polymorphic_id.rb
dorsale-2.6.3 lib/dorsale/polymorphic_id.rb
dorsale-2.6.2 lib/dorsale/polymorphic_id.rb
dorsale-2.6.1 lib/dorsale/polymorphic_id.rb
dorsale-2.6.0 lib/dorsale/polymorphic_id.rb
dorsale-2.5.0 lib/dorsale/polymorphic_id.rb
dorsale-2.4.3 lib/dorsale/polymorphic_id.rb
dorsale-2.4.2 lib/dorsale/polymorphic_id.rb