Índice exclusivo de vários campos Datamapper
-
21-09-2019 - |
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
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