2

我是 ruby​​ 和 rails 的新手,我很难将 MVC 技术与数据库视图结合起来进行概念化。我正在处理一个遗留数据库,它有几个用于生成报告的视图。

我迷路的地方是我如何实际使用数据库视图。它应该放在模型中吗?如果是这样,那究竟会是什么样子?

例如,遗留数据库有一个名为 qryTranscriptByGroup 的视图。它在遗留应用程序中的 SQL 语句中使用,例如“SELECT * FROM qryTranscriptByGroup WHERE group='test_group'”。这会返回少量记录,通常少于 100 条。

如果我创建一个模型 Transcript,我将如何定义像 Transcript.find_by_group(group) 这样的方法?同样,似乎我可能需要阻止任何其他“查找”方法,因为它们在这种情况下是无效的。

还有一个事实是视图是只读的,我需要防止任何创建、更新或销毁它的尝试。

也许我正在以完全错误的方式解决这个问题。底线是我需要从代表用户信息的几个表(模型?)中获取信息(副本)。实际上是一个或多个用户(成绩单复数)。

-谢谢!

4

1 回答 1

6

您可以像使用普通模型一样使用数据库视图。

在你的情况下:

class Transcript < ActiveRecord::Base
  set_table_name "qryTranscriptByGroup"
  set_primary_key "if_not_id"
end

查询将是:

Trascript.find_by_group('test_group')

无需您声明任何内容。

Rails 使用 method_missing 方法神奇地生成 find_by_column_name 方法。

对于创建/更新/删除操作,您可以简单地删除它们或不在控制器中创建它们。

于 2011-03-02T11:43:43.860 回答