0

我在 ruby​​ 应用程序中使用 datamapper,我遇到了一个我不明白的问题。

我有一个 Appartment 模型和一个 Location 模型。一个公寓位于给定位置,多个公寓可以位于同一位置。这通常描述了一个 1-n 关系(我猜 :-))

我的感觉是在 Appartement sql 表中我需要一个 location_id 但我不希望 Location 表中有任何 Appartment 指针。对我来说,位置应该独立存在,不应该引用公寓。

在 Appartement ruby​​ 类中,我添加了:

has n, Location

但它随后在 Location ruby​​ 类中创建了一个 appartment_id,这是我不想要的。

你有什么线索吗?

非常感谢,卢克

4

2 回答 2

1

这是一对多的关系,但对于 Location 模型,而不是 Appartment。这意味着 Location 可以有很多公寓,这是你想要的,所以 Appartment 模型将有 location_id。您所做的是您告诉 datamapper 您的 Appartment 有很多位置,因此它将 appartment_id 添加到 Location。

要修复它,您可以添加:

has n, Appartment

在位置类中。

我根本不知道 datamapper,但是在 Rails 中,您可以在两个模型中定义它。在 Appartment 中,您定义如下内容:

belongs_to Location

并在 Location 中添加类似于我的第一个示例的内容。

于 2010-01-13T14:15:16.337 回答
1

我只想说

class Apartment
  belongs_to :location
end

class Location
  has n, :apartments
end

这将允许您引用@apartment.location 和@location.apartments

于 2010-03-25T02:20:38.840 回答