Frage

In Datamapper, wie würde man angeben, die die Kombination von zwei Feldern muß eindeutig sein. Zum Beispiel Kategorien müssen innerhalb einer Domäne eindeutige Namen haben:

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

  belongs_to :domain
end
War es hilfreich?

Lösung

Haben Sie versucht, beiden Eigenschaften als Schlüssel zu definieren? Nicht sicher, ich habe es versucht, aber auf diese Weise sollten sie ein zusammengesetzter Schlüssel wird.

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

Andere Tipps

Sie haben einen eindeutigen Index für die beiden Eigenschaften zu erstellen:

class Category
  include DataMapper::Resource

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

  belongs_to :domain
end

Eigentlich John, Antwort Joschi ist korrekt: die Verwendung von Namen: unique_index Werte eines Index mehrspaltigen schafft; es ist wichtig, die rechte Seite dieser Hash-Raketen zu lesen (das heißt, wenn es nur true gewesen wäre, wäre man rechts).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top