ruby-on-rails-4 - 升级到 rails 4.2,Model Concerns 现在给出 LoadError: Unable to autoload constant Concerns::blahblah

标签 ruby-on-rails-4

我编写了一个生成器,它为用户创建了一个关注点,以包含在他们的模型中。它在 Rails 4.1.8 上正常工作,但在 Rails 4.2.0 上,我收到以下消息:

LoadError: Unable to autoload constant Concerns::NameSearch.
NameSearch是生成器创建的关注模块,app/models/concerns/name_search.rb :
module NameSearch
  extend ActiveSupport::Concern

  included do
    ...
  end

  module ClassMethods
    ...
  end

private
  ...
end

在模型中,我只是 include NameSearch .在包含关注点后运行 rake 任务(迁移)时出现错误。应用程序实际上运行正常,只是抛出错误的 rake 任务。并且 rake 任务似乎也完成了它的工作,但最后抛出了这个错误。
同样,这在 4.1.8 中运行良好,但在 4.2.0 中却不行。知道发生了什么变化吗?

最佳答案

您需要使用正确的 Ruby 常量查找约定(添加 Concerns:: 到模块):

应用程序/模型/关注/name_search.rb

module Concerns::NameSearch
  extend ActiveSupport::Concern

  included do
    ...
  end

  module ClassMethods
    ...
  end

private
  ...
end

关于ruby-on-rails-4 - 升级到 rails 4.2,Model Concerns 现在给出 LoadError: Unable to autoload constant Concerns::blahblah,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353426/

相关文章:

ruby-on-rails - rails 4-- 没有 table 的模型

ruby - 从 git 中引用 ruby​​ gem 会破坏 aws beanstalk 部署

ruby-on-rails-4 - 在 Heroku 临时帐户上未正确检索 Google Auth 凭据

ruby-on-rails - 从 Rails 4 中的另一个 Controller 呈现操作模板

ruby-on-rails - 进行客户端验证的 Rails 方式(Rails 4 with simple_form)

ruby-on-rails-4 - Rails Admin vs Active Admin vs Typus vs Active Scaffold [2015]

css - Rails collection_select + bootstrap 下拉菜单

ruby-on-rails-4 - active_model_serializers在rails-api中不起作用

ruby-on-rails - Rails 3.2 在 4.1 发布后是否仍受支持?

jquery - Rails 4 中的 Ajax 加载微调器