2010-01-13 68 views
0

我在一個紅寶石應用程序中使用datamapper,我面臨一個我不明白的問題。datamapper次要密鑰

我有一個公寓模型和位置模型。一個公寓在一個給定的位置,幾個公寓可以在同一個位置。這通常描述1-n關係(我猜:-))

我的感觸是在Appartement sql表中我需要一個location_id,但我不想在Location表中有任何Appartment指針。對我而言,位置應該靠自己生活,不應該引用公寓。

在公寓Ruby類,我已經加入:

has n, Location 

但隨後創建位置紅寶石的類內的appartment_id,我不想要的。

你有什麼線索嗎?

非常感謝, 呂克

回答

1

這是一個一對多的關係,但對選址模型,而不是公寓。 這意味着位置可以有很多公寓,這是你想要的,所以Appartment模型將有location_id。你所做的是,你告訴datamapper你的公寓有很多位置,所以它將appartment_id添加到位置。在Location類

has n, Appartment 

要解決它,你可以添加。

我不知道DataMapper的所有,但Rails中,你可以在兩個模型定義它。在公寓裏,你定義了類似的東西:

belongs_to Location 

和在你的位置你添加一些像我的第一個例子。

+0

謝謝,我回家:-) – Luc 2010-01-13 14:40:00

1

我只想說

class Apartment 
    belongs_to :location 
end 

class Location 
    has n, :apartments 
end 

這將允許你引用@ apartment.location和@ location.apartments

+0

使用我會盡快測試此符號也優於使用類。然後你可以避免加載順序問題 – namelessjon 2011-06-15 21:59:15