23 lines
614 B
Ruby
23 lines
614 B
Ruby
class ApplicationRecord < ActiveRecord::Base
|
|
self.abstract_class = true
|
|
|
|
def self.record_from_typed_id(id)
|
|
class_name, record_id = GraphQL::Schema::UniqueWithinType.decode(id)
|
|
|
|
if defined?(class_name)
|
|
Object.const_get(class_name).find(record_id)
|
|
else
|
|
raise ActiveRecord::RecordNotFound, "Unexpected object: #{class_name}"
|
|
end
|
|
rescue => e
|
|
raise ActiveRecord::RecordNotFound, e.message
|
|
end
|
|
|
|
def self.id_from_typed_id(id)
|
|
GraphQL::Schema::UniqueWithinType.decode(id)[1]
|
|
end
|
|
|
|
def to_typed_id
|
|
GraphQL::Schema::UniqueWithinType.encode(self.class.name, id)
|
|
end
|
|
end
|