datamapper多字段唯一索引

时间:2009-09-02 22:37:38

标签: ruby indexing datamapper

在Datamapper中,如何指定两个字段的组合必须是唯一的。例如,类别必须在域中具有唯一名称:

class Category
  include DataMapper.resource
  property :name, String, :index=>true #must be unique for a given domain

  belongs_to :domain
end

3 个答案:

答案 0 :(得分:16)

您必须为这两个属性创建唯一索引:

class Category
  include DataMapper::Resource

  property :name, String, :unique_index => :u
  property :domain_id, Integer, :unique_index => :u

  belongs_to :domain
end

答案 1 :(得分:2)

实际上,John,Joschi的回答是正确的:使用named:unique_index值会创建一个多列索引;阅读那些哈希火箭的右侧是很重要的(即,如果它刚刚true,那么你就是对的。)

答案 2 :(得分:1)

您是否尝试将这两个属性定义为键?不确定我是否尝试过,但这样他们应该成为一个复合键。

property :name, String, :key => true    
property :category, Integer, :key => true