lib/active_model/global_id.rb



require 'active_support/core_ext/string/inflections'
require 'active_support/core_ext/array/access'

module ActiveModel
  class GlobalID
    def self.create(model)
      new "GlobalID-#{model.class.name}-#{model.id}"
    end

    def initialize(gid)
      @gid = gid
    end

    def model_class
      @model_klass ||= @gid.split("-").second.constantize
    end

    def model_id
      @model_id ||= @gid.split('-')[2..-1].join('-')
    end

    def ==(other_global_id)
      other_global_id.is_a?(GlobalID) && to_s == other_global_id.to_s
    end

    def to_s
      @gid
    end
  end
end