2010-06-02 29 views
3

我将有大量的子类,所以想要将它们组织在一个名为stream的子文件夹下。添加以下行到environment.rb文件,以便在子文件夹中的所有类会被加载:Rails:在模型中创建子文件夹?

  Rails::Initializer.run do |config| 
... 
      config.load_paths += Dir["#{RAILS_ROOT}/app/models/*"].find_all { |f| File.stat(f).directory? } 
... 
    end 

我认为这将解决其中按照约定的模型类的命名空间为根据模块的问题。然而,当我打电话叫流中的数据流文件夹中的类之一,我得到以下错误:

NoMethodError: undefined method `new' for Stream:Module 
    from (irb):28 
    from /usr/local/bin/irb:12:in `<main>' 

这里的父模型和一个孩子:

class Stream 
end 

class EventStream < Stream 
end 

任何想法这个问题是什么?

+0

尝试此并获得相同的错误:config.load_paths + =%W [#{RAILS_ROOT}/app/models/stream]。 – keruilin 2010-06-02 21:34:04

回答

-1

你可以发布你的型号代码吗?父代码和至少一个子模型的代码。你打算做什么像Stream & & Stream :: Client?

我不确定是否假设模型要继承子类,或者您要为每个模型的子类添加模型。只要知道模型不会嵌套在您的代码中,因为它们在文件系统中的位置,而不是类中所在的模块,但是从您的初始文章中无法分辨出来。

+0

需要使用语法:Stream :: Client – keruilin 2010-06-04 12:10:57

+0

不要在一个答案内部探索,而是在对原始问题的评论中进行探究。 – Noz 2013-03-01 18:48:06