From 0f663603d0af0876e481d5c5b8a071335b346009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Miedes=20Garc=C3=A9s?= Date: Thu, 29 Dec 2016 14:19:11 +0100 Subject: [PATCH] Only create field to retrieve single objects in QueryRoot if ID was exposed --- config/initializers/graphql.rb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/config/initializers/graphql.rb b/config/initializers/graphql.rb index e837f294b..d2353e308 100644 --- a/config/initializers/graphql.rb +++ b/config/initializers/graphql.rb @@ -35,15 +35,17 @@ QueryRoot = GraphQL::ObjectType.define do type_creator.created_types.each do |model, created_type| # create an entry field to retrive a single object - field model.name.underscore.to_sym do - type created_type - description "Find one #{model.model_name.human} by ID" - argument :id, !types.ID - resolve -> (object, arguments, context) do - if model.respond_to?(:public_for_api) - model.public_for_api.find(arguments["id"]) - else - model.find(arguments["id"]) + if API_TYPE_DEFINITIONS[model].include?(:id) + field model.name.underscore.to_sym do + type created_type + description "Find one #{model.model_name.human} by ID" + argument :id, !types.ID + resolve -> (object, arguments, context) do + if model.respond_to?(:public_for_api) + model.public_for_api.find(arguments["id"]) + else + model.find(arguments["id"]) + end end end end