DataMapper varios campos de índice único
-
21-09-2019 - |
Pregunta
En DataMapper, ¿cómo se especifique el la combinación de dos campos debe ser único. Por ejemplo, las categorías deben tener nombres únicos dentro de un dominio:
class Category
include DataMapper.resource
property :name, String, :index=>true #must be unique for a given domain
belongs_to :domain
end
Solución
¿Se intenta definir propiedades tanto como llaves? No estoy seguro que lo he probado, pero de esa manera que debería convertirse en una clave compuesta.
property :name, String, :key => true
property :category, Integer, :key => true
Otros consejos
Hay que crear un índice único para las dos propiedades:
class Category
include DataMapper::Resource
property :name, String, :unique_index => :u
property :domain_id, Integer, :unique_index => :u
belongs_to :domain
end
En realidad, John, la respuesta de Joschi es correcta: el uso del nombre: valores unique_index no crear un índice de múltiples columnas; Es importante leer la parte derecha de esos cohetes hash (es decir, si hubiera sido true
, estaría en lo correcto).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow