加入与Ruby Object Mapper的关系

时间:2013-10-06 05:37:01

标签: ruby-on-rails ruby datamapper ruby-object-mapper

我有一点"just for fun" Rails app我正在从Active Record和SQLite迁移到Ruby Object Mapper。这主要是我探索数据映射器模式影响我的代码的方式。

我有一个课程模型,一个游戏模型和一个分数模型。在计算课程记录时,我需要获得一个课程对象及其所有相关游戏以及每个游戏的所有分数。

我发现an example of creating a joined relation但是我似乎无法找到如何为该关系编写映射器的任何示例,因此我无法实际获取该数据。

我的ROM架构如下所示:

base_relation :courses do
  repository :main
  attribute :id,          Integer
  attribute :name,        String
  attribute :created_at,  Time
  attribute :updated_at,  Time
  key :id
end

base_relation :games do
  repository :main
  attribute :id,          Integer
  attribute :course_id,   Integer
  attribute :played_at,   Time
  attribute :created_at,  Time
  attribute :updated_at,  Time
  key :id
  key :course_id
end

我想查询一下我可以获得所有相关游戏的特定课程。类似的东西:

env[:courses].restrict(id: 1).join(env[:games]).one

但是我无法找到指定连接的正确语法,我只知道公理支持内存中的连接。

有没有人知道使用Ruby Object Mapper连接数据进行读写操作的好例子?

1 个答案:

答案 0 :(得分:3)

目前ROM不支持映射连接关系OOTB。在公理中出现了一个名为nest / unnest的新功能,ROM将用它以合理的方式映射连接的关系。

现在它需要大量的hackery,这就是为什么我们决定推迟该功能并等待公理的巢/不需要。