Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 数据映射器辅助密钥_Ruby_Datamapper - Fatal编程技术网

Ruby 数据映射器辅助密钥

Ruby 数据映射器辅助密钥,ruby,datamapper,Ruby,Datamapper,我在一个ruby应用程序中使用datamapper,我遇到了一个我不理解的问题 我有一个公寓模型和一个位置模型。一个公寓位于给定位置,多个公寓可以位于同一位置。这通常描述了一个1-n关系(我猜:-) 我的感觉是,在ApartmentSQL表中,我需要一个location_id,但我不希望location表中有任何Apartment指针。对我来说,这个位置应该是独立的,不应该参考公寓 在Apparement ruby类中,我添加了: has n, Location 但是它随后在Location

我在一个ruby应用程序中使用datamapper,我遇到了一个我不理解的问题

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

我的感觉是,在ApartmentSQL表中,我需要一个location_id,但我不希望location表中有任何Apartment指针。对我来说,这个位置应该是独立的,不应该参考公寓

在Apparement ruby类中,我添加了:

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

你有什么线索吗

非常感谢,
Luc

这是一对多的关系,但用于位置模型,而不是公寓。 这意味着位置可以有许多公寓,这是您想要的,所以公寓模型将有位置id。您所做的是告诉datamapper您的公寓有许多位置,所以它将公寓id添加到位置

要解决此问题,您可以添加:

has n, Appartment
在位置类中

我根本不知道datamapper,但在Rails中,您可以在两种模型中定义它。在公寓中,您定义如下:

belongs_to Location
在位置中,您添加了类似于我的第一个示例的内容。

我只想说

class Apartment
  belongs_to :location
end

class Location
  has n, :apartments
end

这将允许您引用@partment.location和@location.partments

谢谢,我一到家就会测试:-)使用符号比使用类更可取。这样就可以避免加载顺序问题