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
命名空间中的一个。
我有一个 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
命名空间中的一个。