ruby-on-rails - 在 ruby​​ on Rails 中放置生成报告的所有逻辑的最佳位置是什么?

标签 ruby-on-rails code-organization project-organization

我有许多模型用于获取数据并生成报告。

该报告不需要存储,即它不是事件记录。

但肯定有大约 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/

相关文章:

c++ - 在一个代码项目中_不_使用多个文件有什么好处吗? (C++)

c# - Visual Studio 解决方案 - 解决方案所需的实用程序 EXE 的正确位置

python - 如何组织 Python 项目?

ruby-on-rails - 如何替换 therubyracer javascript 运行时

ruby-on-rails - Rails 5 按 belongs_to 协会分组

asp.net - 我应该将 JavaScript 放在哪里 - 页面还是外部文件?

build-automation - 如何使用 nmake 组织 C++ 项目的项目树?

ruby-on-rails - Rails 更新三向连接表

ruby-on-rails - "merging"多个模型。创建一个 "recent activity"框

android - 在Android项目中使用开源库