具有与顶级类同名的模块类:'期望module_classe_file来定义top_level类'

时间:2016-06-28 17:59:51

标签: ruby-on-rails ruby-on-rails-3

我的apps / model文件夹看起来像这样:

models/
  module/
    category.rb
  category.rb

但我似乎无法找到正确自动加载模块/类别的方法:我总是有错误Expected /app/models/module/category.rb to define Category

截至目前,我只看到两个选项:不将其添加到自动加载,或将module/category.rb重命名为module/module_category.rb,这似乎都不是一个好主意

1 个答案:

答案 0 :(得分:1)

我认为在您的情况下最好的做法是将B1添加到module/category.rb目录中。

  1. lib抓取代码并创建category.rb文件。

  2. 然后将您的模块代码包含在lib/category.rb

  3. app/models/category.rb中,请务必加载application.rb目录lib

    config.autoload_paths << "#{Rails.root}/lib
  4. 我个人不会这样做。这个命名令人困惑。您是否尝试过命名代码?

    例如,你也可以试试这个:

    class Category < ActiveRecord::Base
      include Category
    

    然后在 models/ category/ category_something.rb #change the name of the file to something else category.rb

    category_something.rb

    然后就这样你可以像模块一样使用代码。