Как исправить Lint / Синтаксис: неожиданный токен tRPAREN в Rails? - PullRequest
0 голосов
/ 01 июня 2018

Поэтому я пытаюсь создать мутацию в GraphQL для Rails и получаю некоторые проблемы с RuboCop и не могу понять, как исправить код:

resolve(Auth.protect lambda (_obj, inputs, ctx) do
  current_user = ctx[:current_user]
  if current_user.update(inputs.to_params)
    { user: current_user }
  else
    { messages: current_user.fields_errors }
  end
)
end 

Это указывает на скобки послеctx и до последнего конца.Если я уберу скобку ИЛИ я сделаю лямбду (_obj, input, ctx), я получу:

Lint/Syntax: unexpected token kDO_block

Ответы [ 2 ]

0 голосов
/ 02 июня 2018
resolve lambda { |_obj, inputs, ctx|
   (Auth.protect current_user = ctx[:current_user]
  if current_user.update(inputs.to_params)
    { user: current_user }
  else
    { messages: current_user.fields_errors }
  end)
 }
0 голосов
/ 01 июня 2018

Я почти уверен, что это не настоящий рубин.Это может работать, но уродливо, потому что вы передаете многострочный блок в качестве аргумента метода.

resolve(Auth.protect lambda do (_obj, inputs, ctx)
  current_user = ctx[:current_user]
  if current_user.update(inputs.to_params)
    { user: current_user }
  else
    { messages: current_user.fields_errors }
  end
end)

Вы можете сделать его более читабельным, выполнив что-то более похожее на это:

auth = Auth.protect lambda do (_obj, inputs, ctx)
  current_user = ctx[:current_user]
  if current_user.update(inputs.to_params)
    { user: current_user }
  else
    { messages: current_user.fields_errors }
  end
end

resolve(auth)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...