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
¿Fue útil?

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
scroll top