【发布时间】:2010-04-15 16:01:12
【问题描述】:
我使用 Ruby on Rails 管理一个研究数据库。输入的数据主要供科学家使用,他们更喜欢将研究的所有相关信息放在一个巨大的表格中,以便在他们选择的统计软件中使用。我目前将其呈现为 CSV,因为它操作起来非常简单,并且与人们想要使用的工具兼容。
我已经编写了许多视图(SQL 类,而不是 Rails HTML/ERB 类)来实现他们期望的输出。其中一些视图非常大,并且背后有相当多的复杂性。我用 SQL 编写它们是因为使用 SQL 可以更轻松地完成许多计算和比较。它们当前直接从名为views.sql 的文件加载到数据库中。要获取请求的数据,我会使用select * from my_view;。
views.sql 文件变得非常大。部分问题是我们仍在弄清楚我们收集的数据意味着什么,因此一直在对视图进行很多更改——并且正在创建大量视图。其中许多需要可重复。
我最近遇到了组织和测试这些视图的问题。 Rails 非常适用于用户界面和业务逻辑,但我不知道有多少现有结构可以处理我们需要的报告。
我想到的一些选项:
- 我应该以某种方式将它们移动到最相关的模型中吗?几个视图相互交互,这使得这种情况比只做一个
find_by_sql更复杂,所以我不知道它们是否应该只是模型的一部分。 - 也许它们应该被视为 MVC 意义上的“视图”? (也就是说,它们可以被移动到
app/views/并与 HTML 一起存在,可能作为名为my_view.csv.sql的文件返回 CSV。)
您将如何处理这样一个复杂的报告问题?
更新为姆拉登·贾布拉诺维奇
开始时有几个视图用于报告目的。我的老板决定他们想要更多,所以我开始写更多。根据我的要求,有些人提供了几百列数据。
我现在有几千行视图都放在一个文件中。我不喜欢这种情况,所以我想重新组织/重构代码。我还想要一种提供 CSV 的简单方法——我目前正在运行查询并手动发送电子邮件,这很容易实现自动化。最后,我希望能够对视图的输出编写一些测试,因为已经弹出了几个回归。
【问题讨论】:
-
“在 Rails 中组织视图”到底指的是什么?也许你可以举例说明其中的一些?
标签: sql ruby-on-rails ruby reporting views