Ruby, предпочитайте {...} более do...end для однострочных блоков. Но ошибка

У меня есть этот код в файле класса.rb:

field :user, Types::UserType do resolve ->(_obj, _args, ctx) { ctx[:user] } end

что мне нужно, это удалить do а также end из одной строки, я думаю, {},

[Style/BlockDelimiters] Prefer{...}overделать... конецfor single-line blocks.

Но я не понимаю, почему он выдает эту ошибку:

[ruby] syntax error, unexpected '{', expecting '('
[ruby] syntax error, unexpected '}', expecting keyword_end

Версия RuboCop

$ rubocop -V
0.51.0 (using Parser 2.4.0.2, running on ruby 2.4.2 x64-mingw32)

1 ответ

Решение

Чтобы успокоить Rubocop, переключитесь на это:

field :user, Types::UserType do
  resolve ->(_obj, _args, ctx) { ctx[:user] }
end

Или это:

field(:user, Types::UserType) { resolve ->(_obj, _args, ctx) { ctx[:user] } }

Я бы сказал, что первое намного чище, чем второе, но решать вам.

Другие вопросы по тегам