2009-11-16 8 views
0

Je voudrais avoir une hiérarchie parent-enfant ET je voudrais avoir le concept d'un "id-série" sur le parent. Ainsi, le parent (si vous l'avez mis à jour) expirera l'ancienne clé unique. Conservez l'identificateur de série et insérez une deuxième ligne. Je voudrais que les enfants "pendent" l'identifiant de cette série plutôt que l'identifiant unique. Savez-vous s'il est possible que BelongsTo se connecte à une colonne non primaire (mais unique via GUID)?Can ActiveRecord HasMany/Belongs Pour utiliser une colonne non-PrimaryKey pour la relation?

Parent: UniqueId (guid), SeriesId (guid), Nom, Description enfant: UniqueId (guid), ParentId (se connecte toujours ot UniqueId-dessus), Nom, Description.

Je sais que les relations de clés étrangères devraient vraiment avoir une «clé» d'un côté de la relation, mais par mes GUID, ils sont comme des clés ... mais pas vraiment des clés.

Ce n'est pas un gros problème, mais si j'expire le parent en mettant à jour ses métadonnées, je voudrais éviter d'avoir à "copier" tous les enfants dans la nouvelle copie du parent. Est-ce que j'essaie de faire quelque chose qui ne peut pas arriver?

+0

Au lieu d'essayer de le faire, je modéliser la relation série élément comme plusieurs à plusieurs. –

Répondre

-1

Il y a une option pour belongs_to qui vous permet de spécifier la relation:

:foreign_key 
    Specify the foreign key used for the association. By default this is guessed to be the name of the association with an "_id" suffix. So a class that defines a belongs_to :person association will use "person_id" as the default :foreign_key. Similarly, belongs_to :favorite_person, :class_name => "Person" will use a foreign key of "favorite_person_id". 
+0

J'utilise la version .NET de Castle, donc la syntaxe est un peu différente mais je vais essayer. Je crois que je triche parce que ce n'est pas un ForeignKey plutôt comme un ForeignKey-LikeColumn: P –

+0

Si ma relation était en fait une clé étrangère, je pense que c'est le bon conseil mais j'ai travaillé autour de ça en faisant une nouvelle association objets enfants. Je ne pense pas que ce que j'ai demandé est possible. –