2009-07-05 13 views
0

DataMapperでモデルを関連付けるのに問題があります。そのシンプルですが、私はちょうどアイデアを得ることができます。DataMapper has_one problem

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

2. Publishers 
-> id 
-> title 

クラス:

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

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

だから、質問です:どのように私は予約する出版社接続することができます

だから、私は2つのテーブルを持っていますか?それは1対1の関係であり、全体としては次のようになります。

p = Book.get(12345).publisher 

申し訳ありません、多分それは馬鹿です。しかし、私はどのような宣言を使用すべきか理解できません。

答えて

2

母、私は午前2時に座って狂ったばかだ。私が何かを尋ねると、いつも私に起こっています - 突然私の質問の答えを自分で見つけてください。

これは間違っていますが、1対多の関係があります。だから、空の太陽のように簡単です。

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 

それはそれです。それは誰かに役立つかもしれません。

+0

ActiveRecordとDataMapperの両方で、外部キーを持つテーブルはbelongs_toアソシエーションを持つクラスで表されます。関係の反対の端は、ある形の「有」の関係によって表される。 ActiveRecordでは、これは "has_one"または "has_many"です。 DataMapperでは、「arity」は任意の数(つまり、1)、範囲(2..4)または無限(n)を持つことができます。 –