DataMapper属性可以出现在多个复合索引中吗?

时间:2010-01-26 21:09:09

标签: ruby indexing datamapper composite-index

我发现这个问题已经在DataMapper的Ticket #58中讨论过了,显然早在2007年就已经讨论过了,但我在最新版本(dm-core-0.10.2)中找不到如何做到这一点。我想定义两个复合索引,每个索引部分基于某个属性。我希望我能做到这一点......

class Stat
  include DataMapper::Resource
  property :id,            Serial,
  property :collected_on,  Integer #yyyyMMddhhmm
  property :measure,       Integer
  property :dimension_one, Integer
  property :dimension_two, Integer
  property :source_id,     Integer
  index [:collected_on, :dimension_one, :dimension_two]
  index [:source_id, :collected_on]
end

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

class Stat
  include DataMapper::Resource
  property :id,            Serial,
  property :collected_on,  Integer, :index => [ :index_one, :index_two ]
  property :measure,       Integer
  property :dimension_one, Integer, :index => :index_one
  property :dimension_two, Integer, :index => :index_one
  property :source_id,     Integer, :index => :index_two
end

当然,您可以根据自己的喜好制作索引。如上所示,索引可以是Array,也可以是Symbol,如果您想将属性放在索引中,并且您不关心什么,那么索引可以只是true索引被调用。