3

我需要某个模型来包含对文档的引用。大多数模型可以存储在 postgres 中。该模型用于游戏中的“关卡”。我想将关卡数据本身存储在文档中,这比在 sql 中制作复杂的树更有意义。

我可以使用安装了 mongoid 的 postgres;但是,在安装了 mongoid gem 之后,我似乎只能搭建 mongoid(非活动记录)文档。

问题是我引用了其他表,我不一定知道如何在 mongoid 模型中将其链接起来。

问题:

  1. 如何强制使用活动记录而不是 mongoid 进行脚手架,反之亦然。 编辑:部分回答在这里:在 Mongoid 安装后使用 Active Record 生成器?(第二个答案有效,但我不知道如何轻松地来回走动)

  2. 有没有一种简单的方法可以从活动记录模型中引用文档(我知道文档说不要混合它们,但它非常适合我想要做的事情)。

  3. 如果无法混合它们,那么我应该如何从 postgres/活动记录表中引用文档。换句话说,我怎样才能同时获得两条数据?

谢谢!

4

1 回答 1

7

关于您的第一个问题,理想的解决方案将类似于引用帖子中第一个答案的内容。但是,不是生成迁移,而是生成模型。因此,当您想要一个 Active Record 模型时,只需运行:

rails g active_record:model

至于您的第二个和第三个问题,要将 Active Record 模型与 Mongoid 文档相关联,只需将 ObjectId 作为字符串存储在模型中。然后,当您检索记录时,从字符串中创建一个新的 ObjectId 并使用它来查询相关文档。

您可以像这样从字符串中创建对象 ID:

BSON::ObjectId.from_string("object_id_string")

在 ActiveRecord 和 Mongoid 之间混合和匹配时,没有一种简单的方法可以轻松地遵循内部关系,所以恐怕必须通过 Ruby 代码来完成。

您在 rails 中定义的模型要么扩展一个 ORM 的基类,要么扩展另一个,并且它们彼此不知道。可能有一些项目可以作为这些 ORM 之上的一个层,但我不熟悉目前存在的任何项目。

于 2012-05-29T15:24:32.187 回答