如何在rails中编写和包含常规ruby类

Hor*_*ice 8 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我正在学习Rails.我有一个控制器负责显示解析用户上传的文件的数据.我不希望数据存储在模型中的任何位置.我可以包含一个可以在我的控制器方法中实例化的类吗?这是我的意思的基本代码示例:

该控制器只包含一种方法:

class MyController < ApplicationController
    def index
        test = FileProcessorService.new
        @test = test.test()
    end
end
Run Code Online (Sandbox Code Playgroud)

这是在实例化调用其方法时将处理逻辑的类:

class FileProcessorService
    def test
        return 'This is a test'
    end
end
Run Code Online (Sandbox Code Playgroud)

我的问题:

这个班级最好的存放地点在哪里?我怎样才能在控制器中引用这个类?关于在rails中使用类的特定主题的任何建议?常规ruby类的实例是控制器中的问题吗?我不希望我的用户看到相同的数据.这就是为什么我不想在我的控制器中包含全局变量.没有模型,因为我有一个MVC与Java MVC的背景.一旦我理解了基本的rails控制器功能如何工作,我将转向模型.

预先感谢您的帮助.

Zac*_*emp 9

我通常把这些app/classes,或如果有很多人,为更具体的文件夹喜欢app/services,app/notifiers等等.

您可以在config/application.rb以下位置启用自动加载:

config.autoload_paths += %W(#{config.root}/app/classes #{config.root}/app/services)
Run Code Online (Sandbox Code Playgroud)

如果它们不是特定于应用程序,则将它们提取到gem.

  • 将此答案中的`config.autoload_paths`行添加到`config/application.rb`文件中的`class Application <Rails :: Application`中.这导致Rails自动加载类,你应该能够像在你的问题中那样实例化它. (2认同)