Ruby on rails 如何将一堆普通的老Ruby对象放在models子目录中?

Ruby on rails 如何将一堆普通的老Ruby对象放在models子目录中?,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的Rails 3.2应用程序中,/app/models/目录中有一堆普通的老ruby对象。我想将其中一些移动到一个单独的文件夹中,比如/app/models/data\u presenter/。对于其中一个对象 # /app/models/data_presenter.rb class DataPresenter # ... end 我试过以下方法 # /app/models/data_presenter/data_presenter.rb class DataPresenter::D

在我的Rails 3.2应用程序中,
/app/models/
目录中有一堆普通的老ruby对象。我想将其中一些移动到一个单独的文件夹中,比如
/app/models/data\u presenter/
。对于其中一个对象

# /app/models/data_presenter.rb
class DataPresenter
  # ...
end
我试过以下方法

# /app/models/data_presenter/data_presenter.rb
class DataPresenter::DataPresenter
  # ...
end

但是,我得到了
TypeError(错误的参数类型模块(预期的类))
错误。有没有克服这个问题的建议(有或没有名称空间)?我是否还需要更改相应模型的测试名称和位置?

正如@Broisasse所指出的,问题是我有一堆子类继承自基类
DataPresenter
。对于那些子类,我忘记了名称空间,即

# /app/models/data_presenter/color_data_presenter.rb
class ColorDataPresenter < DataPresenter
  # ...
end
#/app/models/data_presenter/color_data_presenter.rb
类ColorDataPresenter
应该是

# /app/models/data_presenter/color_data_presenter.rb
class DataPresenter::ColorDataPresenter < DataPresenter::DataPresenter
  # ...
end
#/app/models/data_presenter/color_data_presenter.rb
类DataPresenter::ColorDataPresenter
或者类似地

module DataPresenter
  class ColorDataPresenter < DataPresenter
    # ...
  end
end
模块数据呈现器
类ColorDataPresenter
对于测试,我找不到神奇的解决方案,所以我只写了

# /test/unit/answers_presenter/color_data_presenter_test.rb
require 'test_helper'
class ColorDataPresenterTest < ActiveSupport:TestCase
  should 'do something cool' do
    presenter = DataPresenter::ColorDataPresenter.new
    assert presenter.do_something_cool
  end
end
#/test/unit/answers_presenter/color_data_presenter_test.rb
需要“测试助手”
类ColorDataPresenterTest
您是否已将所有出现的
DataPresenter
重命名为
DataPresenter::DataPresenter
?似乎有些类继承了它,但得到了一个模块
DataPresenter
。当您创建
/app/models/data\u presenter/data\u presenter.rb
时,您是否事先删除了
/app/models/data\u presenter.rb
?另外,引发错误的类/模块的特定调用也会很有用。@BroiSats:您完全正确!我有一堆具体的演示者,它们继承了DataPresenter。我忘了给那些。。。