在Datamapper中,如何指定两个字段的组合必须是唯一的。例如,类别必须在域中具有唯一名称:
class Category
include DataMapper.resource
property :name, String, :index=>true #must be unique for a given domain
belongs_to :domain
end
答案 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