Module: GraphQL::Types::Relay::EdgeBehaviors::ClassMethods

Defined in:
lib/graphql/types/relay/edge_behaviors.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#node_nullable(new_value = nil) ⇒ Object

Set the default node_nullable for this class and its child classes. (Defaults to true.) Use node_nullable(false) in your base class to make non-null node field.



60
61
62
63
64
65
66
# File 'lib/graphql/types/relay/edge_behaviors.rb', line 60

def node_nullable(new_value = nil)
  if new_value.nil?
    @node_nullable != nil ? @node_nullable : superclass.node_nullable
  else
    @node_nullable = new_value
  end
end

#node_type(node_type = nil, null: self.node_nullable, field_options: nil) ⇒ Object

Get or set the Object type that this edge wraps.

Parameters:

  • node_type (Class) (defaults to: nil)

    A Schema::Object subclass

  • null (Boolean) (defaults to: self.node_nullable)
  • field_options (Hash) (defaults to: nil)

    Any extra arguments to pass to the field :node configuration



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/graphql/types/relay/edge_behaviors.rb', line 31

def node_type(node_type = nil, null: self.node_nullable, field_options: nil)
  if node_type
    @node_type = node_type
    # Add a default `node` field
    base_field_options = {
      name: :node,
      type: node_type,
      null: null,
      description: "The item at the end of the edge.",
      connection: false,
    }
    if field_options
      base_field_options.merge!(field_options)
    end
    field(**base_field_options)
  end
  @node_type
end

Instance Method Details

#authorized?(obj, ctx) ⇒ Boolean

Returns:



50
51
52
# File 'lib/graphql/types/relay/edge_behaviors.rb', line 50

def authorized?(obj, ctx)
  true
end

#default_relay?Boolean

Returns:



22
23
24
# File 'lib/graphql/types/relay/edge_behaviors.rb', line 22

def default_relay?
  true
end

#inherited(child_class) ⇒ Object



16
17
18
19
20
# File 'lib/graphql/types/relay/edge_behaviors.rb', line 16

def inherited(child_class)
  super
  child_class.node_type = nil
  child_class.node_nullable = nil
end

#visible?(ctx) ⇒ Boolean

Returns:



54
55
56
# File 'lib/graphql/types/relay/edge_behaviors.rb', line 54

def visible?(ctx)
  node_type.visible?(ctx)
end