Rails 可配置模型与 ActiveSupport::Configurable::Configuration:Class 发生冲突

Rails Configurable Model collides with ActiveSupport::Configurable::Configuration:Class

我有一个 Configurable 型号:

# /models/configuration.rb
class Configuration < ActiveRecord::Base
end

当我在 pages_controller 中引用 Configurable 时,它工作正常:

class PagesController < ApplicationController
  def search
    @description = Configuration.find_by_name('description') || nil
  end
end

但是当我在 application_controller.rb 中引用它时,就像这样

class ApplicationController < ActionController::Base
    def get_menu
       @menu = Configuration.where(name: 'menu') || nil
    end
end

我收到错误 undefined method 'where' for ActiveSupport::Configurable::Configuration:Class。如何防止我的 Configuration 模型和 ActiveSupport::Configurable::Configuration:Class 像这样发生碰撞,或者直接引用我的 Configuration 模型?

提前致谢!

你需要加上前缀

::Configuration.where(name: 'menu')

注意 class 名称前的 ::。它们强制解释器使用主命名空间中的 Configuration class,而不是 ActiveSupport 命名空间中的一个。