为什么 Rubymine 无法识别我的命名空间继承控制器?

Why doesn't Rubymine recognize my namespaced inherited controller?

我有一个名为 backend 的命名空间和以下控制器 application_controller.rb:

class Backend::ApplicationController < ApplicationController
end

现在我从我的用户控制器继承这个控制器:

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

  ...
end

对于应用程序控制器的继承Ruby我的显示了以下错误:

此代码适用于 ruby 解释器。我怎样才能把这个教给 Ruby我的?

我正在 Ruby我的 2018.2.3 并使用 Ruby 2.5.1p57.

提前致谢!

我猜您应该尝试以正确的 "longhand" 方式实际打开模块。

这两种方法实际上并不等同:

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

一般来说,"namespaced" 类 的 "short-cut" 定义 (class Foo::Bar) 应该避免,因为它会引起不断查找的问题。