create_table :categories_posts, :id => false do |t|
t.column :category_id, :integer, :null => false
t.column :post_id, :integer, :null => false
end
Ich habe eine Tabelle verbinden (wie oben) mit Spalten, die zu einer entsprechenden Kategorien Tabelle beziehen und ein Beiträge Tisch. Ich wollte eine eindeutige Einschränkung auf der Verbundschlüssel Kategorie category_id, post_id in der categories_posts Join-Tabelle erzwingen. Aber Rails unterstützt das nicht (glaube ich).Was ist in einer Join-Tabelle die beste Problemumgehung dafür, dass Rails keinen zusammengesetzten Schlüssel hat?
Um die Möglichkeit für doppelte Zeilen in meinen Daten mit der gleichen Kombination von category_id und post_id, zu vermeiden, was ist die beste Problemumgehung für die Abwesenheit eines zusammengesetzten Schlüssels in Rails?
Meine Annahmen sind hier:
- Die Standard-Auto-Nummernspalte (id: integer) würde nichts tun, um meine Daten in dieser Situation zu schützen.
- ActiveScaffold kann eine Lösung zur Verfügung stellen, aber ich bin nicht sicher, ob es übertreibt es einfach für diese einzelne Eigenschaft in mein Projekt einzubeziehen ist, vor allem, wenn es eine elegantere Antwort.
Danke. Beim Lesen verschiedener Blogposts dachte ich, ein zusammengesetzter Index sei nicht möglich und diese Syntax existiere nicht. –
Dies führt zu einer schlechten Benutzeroberflächenerfahrung, wenn der Benutzer versucht, ein dupliziertes rec einzugeben. –
@Larry - Konnte ich die Validierungslogik aus Ihrer Antwort immer noch verwenden und mit dieser Rails-Syntax für zusammengesetzte Indizes kombinieren? –