2009-07-05 6 views
0

Je rencontre des difficultés pour associer des modèles dans DataMapper. C'est vraiment simple, mais je peux juste avoir l'idée.DataMapper has_one problem

, j'ai 2 tables:

1. Books 
-> id 
-> title 
-> publisher_id 

2. Publishers 
-> id 
-> title 

Les catégories:

class Book 
    property :id, Serial 
    property :title, String 
    property :publisher_id, Integer 
end 

class Publisher 
    property :id, Serial 
    property :title, String 
end 

Ainsi, la question est la suivante: Comment puis-je connecter l'éditeur réserver? Il est relation 1-to-1, et le tout censé ressembler à ceci:

p = Book.get(12345).publisher 

Désolé, peut-être qu'il est stupide. Mais je ne peux pas comprendre quel genre de déclaration je devrais utiliser.

Répondre

2

Haha, im fou idiot assis à 2 heures du matin. Toujours en train de m'atteindre, quand je demande quelque chose - tout à coup trouver la réponse à ma question moi-même.

Il est incorrect, il existe une relation un-à-plusieurs. Ainsi, il est simple comme le soleil dans le ciel:

class Book 
    property :id, Serial 
    property :title, String 
    property :publisher_id, Integer 

    belongs_to :publisher 
end 

class Publisher 
    property :id, Serial 
    property :title, String 

    has n, :books 
end 

C'est tout. Cela pourrait être utile à quelqu'un.

+0

Dans ActiveRecord et DataMapper, la table avec la clé étrangère est représentée par une classe avec une association belongs_to; la fin opposée de la relation est représentée par une forme d'association "a". Dans ActiveRecord, cela peut être "has_one" ou "has_many"; dans DataMapper, "has (arity)", où arity peut être n'importe quel nombre (c'est-à-dire a 1), range (a 2..4) ou infinity (a n). –

Questions connexes