Pergunta

No Datamapper, como especificaria a combinação de dois campos deve ser única. Por exemplo, categorias devem ter nomes únicos em um domínio:

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

  belongs_to :domain
end
Foi útil?

Solução

Você tentou definir as duas propriedades como chaves? Não tenho certeza se eu tentei, mas assim eles devem se tornar uma chave composta.

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

Outras dicas

Você precisa criar um índice exclusivo para as duas propriedades:

class Category
  include DataMapper::Resource

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

  belongs_to :domain
end

Na verdade, John, a resposta de Joschi está correta: o uso de valores nomeados: exclusivos_index cria um índice de várias colunas; É importante ler o lado direito daqueles hash-rockets (ou seja, se tivesse acabado de ser true, você estaria certo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top