Sha256: 80aeab805d375393a1b7b2ce5b59e3d1a6ad2941b6869194aa553f4bd80a78ff
Contents?: true
Size: 1.05 KB
Versions: 12
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true module GraphqlRails # adds `.decorate` class method to any class. Handy when using with paginated responses # # usage: # class FriendDecorator < SimpleDecorator # include GraphqlRails::Decorator # # graphql.attribute :full_name # end # # class User # has_many :friends # graphql.attribute :decorated_friends, paginated: true, type: 'FriendDecorator!' # # def decorated_friends # FriendDecorator.decorate(friends) # end # end module Decorator require 'active_support/concern' require 'graphql_rails/decorator/relation_decorator' extend ActiveSupport::Concern class_methods do def decorate(object, *args) if Decorator::RelationDecorator.decorates?(object) Decorator::RelationDecorator.new(relation: object, decorator: self, decorator_args: args) elsif object.nil? nil elsif object.is_a?(Array) object.map { |item| new(item, *args) } else new(object, *args) end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems