Rails模型名称查找:奇怪的未初始化常量错误

时间:2019-06-16 18:26:12

标签: ruby-on-rails

我有一个控制器,应该为表单输出建议。控制器位于Admin :: Shop命名空间下,位于app / controllers / admin / shop / suggest_controller.rb

class Admin::Shop::SuggestController < Admin::AdminsAreaController
  def index
    render:json => Shop::Product.all.group(:name).pluck(:name) and return
  end
end

Shop :: Product是在app / models / shop / product.rb下定义的模型,如下所示:

class Shop::Product < PostgresRecord
  # ...
end

我可以从控制台和rspec测试对此模型运行查询,而不会出现任何问题。但是,当我尝试从控制器内部进行查询时,如果文件发生更改(我进行了一些编辑并保存),则会得到uninitialized constant Admin::Shop::SuggestController::Shop

要使其重新工作,我必须重新启动服务器(使用Puma)。

尝试从其他名称空间中的其他控制器进行查询时,我得到相同的行为。

日志中没有任何内容。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

尝试::Shop::Product.all.group。这将导致常量查找从全局名称空间开始。

关于这个主题有很多不错的articles。给他们读一读!