2010-01-13 41 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