Почему Rubymine не распознает мой унаследованный контроллер пространства имен? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть пространство имен с именем backend и следующий контроллер application_controller.rb:

class Backend::ApplicationController < ApplicationController
end

Теперь я наследую этот контроллер от моего пользовательского контроллера:

class Backend::UserController < Backend::ApplicationController
  def index
    @users = User.all
  end

  ...
end

Для наследованияконтроллера приложений Rubymine показывает мне следующую ошибку:

Expected: ; or end of line

Этот код подходит для интерпретатора ruby.Как я могу научить этому Rubymine?

Я на RubyMine 2018.2.3 и использую Ruby 2.5.1p57.

Заранее спасибо!

1 Ответ

0 голосов
/ 05 октября 2018

Я предполагаю, что вы должны попробовать правильный «длинный» способ фактического открытия модуля.

Эти два подхода на самом деле не эквивалентны:

class Backend::ApplicationController < ApplicationController
end

module Backend
  class ApplicationController < ::ApplicationController
  end
end

Поскольку последний действительно правильно устанавливает вложение модуля для работы должным образом:

module Backend
  # this class will inherit from Backend::ApplicationController
  # and not ::ApplicationController
  class UserController < ApplicationController
  end
end

В общем случае "Следует избегать краткого определения (class Foo::Bar) классов «пространство имен», поскольку это вызывает проблемы с постоянным поиском.

...