Ruby on rails 如何将一堆普通的老Ruby对象放在models子目录中?
在我的Rails 3.2应用程序中,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
/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。我忘了给那些。。。