如何使用DataMapper中两个模型的数据进行聚合总计?

时间:2013-12-03 00:31:24

标签: ruby sinatra aggregate datamapper

我是DataMapper和Ruby的新手,并且一直在努力想出一种格式化表达式的方法,这种表达式将给我提供的信息。让我解释。我的项目中有两个模型:

Class Manufacturer
  include DataMapper::Resource

  property :id, Serial
  property :name, String
  ...<snip>...

  has n, :items
end


Class Item
  include DataMapper::Resource

  property :id, Serial
  property :name, String
  ...<snip>...

  belongs_to :manufacturers
end

我想要的是一个集合,它将为我提供所有制造商的列表,以及他们生产的所有项目的计数。 e.g:

"Acme Industries", 32
"Bart Enterprises", 12
"Coco Mondo", 0
"XYZ Corp.", 55

:name模型中的Manufacturercount(:id)模型中的Item。我到目前为止:

Manufacturer.all.items.aggregate(:manufacturer_id, :all.count)

它为我提供了:manufacturer_id属性和正确的项目数。关闭,但没有香蕉。

在这种情况下,如何让制造商name而不是id属性?

1 个答案:

答案 0 :(得分:1)

我试图在一个月前学习如何使用DataMapper,我可以在stackoverflow和互联网上找到非常有限的支持。事实证明,该项目不再受支持,后面的团队正在开发另一个名为ROM的orm。

由于你刚开始我会建议你使用另一个更好的支持(续集,ActiveRecords等)