首页 > 解决方案 > Ruby on Rails 6 加载模块

问题描述

我想知道在 rails 6 中使用具有命名空间的类的正确方法是什么。我有以下内容,但它不起作用并且我收到错误:

“未初始化的常量 ProductsController::Operations 你的意思是?ProductsController::Options”

#app/operations/create.rb
module Operations
  class Create
    def self.foo
      ...
    end
  end
end

#app/controllers/products_controller.rb

class ProductsController < ApplicationController
  def create
    Operations::Create.foo
  end
end

你能帮我吗?

标签: ruby-on-railsruby

解决方案


您的模块应该在任何文件夹中。例如app/services/operations/create.rb(任何名称都可以)与您拥有的相同内容:

module Operations
  class Create
    def self.foo
      ...
    end
  end
end

并调用它Operations::Create.foo

还要确保你重新启动 spring spring stop


推荐阅读