-1

从今年夏天开始,我一直在学习 Rails,并用它编写了一些成功的独立应用程序,并且已经真正了解 Rails 的几乎所有内容。

然而,我目前的项目正在编写 Rails 作为数据库的前端,该数据库将用于其他事物(Web 服务、数据仓库、其他应用程序连接)——我意识到 ActiveRecord 以及大部分围绕开发的 Rails当谈到这种方法时,AR 似乎是非常单一的。

注意:我不是指传统数据库,即。我们必须插入的一个,但被设计为“回到过去”..

Rails 似乎认为它是并且应该是唯一使用这些数据的应用程序。当涉及到复合主键(这是你不能调整的东西,比如表命名和列命名)时,我越来越注意到它。

虽然我知道有一个复合键 gem,但我觉得我正在开发一个依赖于这个单个 gem 工作的整个 MVC 应用程序。我担心我会遇到越来越多这样的事情。我已经研究过替代的 ORM,但似乎许多宝石都依赖于 ActiveRecord。

我想我对 ActiveRecord 的这种明显自私的角度感到有些惊讶和难过。

有人对 Rails 如何与企业级数据库一起工作有任何反馈或成功吗?

4

1 回答 1

3

Rails 主要是作为一个“自以为是”的 Web 开发框架而构建的。

它的开箱即用是全栈 Web 应用程序,其中整个系统都是按照“Rails 方式”构建的,这是 Rails 提交者为保持系统简单而做出的许多决定的结果标准。当您遵守约定时,需要做出的配置决策的数量非常少。

这些约定包括以某种方式设置数据库。主键是自动增量并命名为“id”,外键是“foreigntable_id”。ActiveRecord 是内置的,并且几乎总是假定使用(即使没有使用)。

这并不意味着偏离标准堆栈是行不通的。Sequel 和 DataMapper 工作得很好。您可以(几乎)为您的表格列命名任何您想要的名称。如果你的应用程序可以做它应该做的事情;这是最重要的。

是的,因为您使用了 Datamapper,所以现在您的应用程序依赖于 Datamapper。这怎么是坏事?

了解因为 ActiveRecord 是默认设置,许多其他 gem 建立在 ActiveRecord 上来做他们的事情,所以它们可能无法与 Datamapper 一起使用。这不是 Datamapper(或 Rails)的错。

这里真正的问题是“Rails,即使您使用替代的 ORM 或复合键 gem,是否仍然比 X 更合适和更高效?”

我认为它是。那么我必须在每节课self.table_name=中设置什么?self.primary_key=那么,如果我不得不放弃一些只适用于 ActiveRecord 的 gem 怎么办?那么如果你必须考虑数据库触发器和视图呢?我处理所有这些事情,与我曾经使用过的所有其他东西相比,使用 Rails 仍然是一种乐趣。

于 2013-02-05T15:05:32.107 回答