我有许多模型用于获取数据并生成报告。
该报告不需要存储,即它不是事件记录。
但肯定有大约 80 行代码生成报告数据。
我应该把这些线放在哪里?
它们目前位于 Controller 中,但由于 Controller 应该很薄,我不确定这是否是最好的地方。
最佳答案
我会在应用程序中创建一个名为 reports
的目录,并将所有报告放在其中。
只要文件名和类遵循正常约定,就可以找到rails中app目录中的所有内容。
例如,如果 app/reports/example_report.rb
中有以下内容:
class ExampleReport
def initialize
...
end
end
您将能够从 Controller 中使用它,如下所示:
class SomethingController < ApplicationController
def something
example = ExampleReport.new
...
end
end
依赖于模型的报告被视为应用程序域的一部分,这就是我推荐应用程序目录的原因。在应用程序中添加子目录的便捷性意味着您可以在应用程序中保持不同角色的逻辑分离。应该不难猜测某些东西的实现在哪里。 Controller 位于 app/controllers
中,模型位于 app/models
中,因此报告位于 app/reports
中。例如,如果您要向应用程序添加通用服务类,它们可以放入 app/services
中。
相反,它们不属于 lib,因为它们不能以通用方式运行。为了进一步说明这一点,只有您可以设想在任何 Rails 项目中使用的代码才属于 lib 目录。
关于ruby-on-rails - 在 ruby on Rails 中放置生成报告的所有逻辑的最佳位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179093/