2010-09-28 62 views
1

我对轨道上的红宝石颇为陌生,但我觉得它很有趣。在一张桌子上的几个导轨模型参考

无论如何,我正在建立我的模型集,可以这么说。我有一个模型的地方,这样产生的:

rails generate scaffold Place name:string description:text type:string 

现在,我想使两两地之间的路径模型,持有的距离。我怎么做到这一点,我只看到如何只引用一个模型到目前为止。

感谢收听...

+1

有很多的教程。例如,http://guides.rubyonrails.org/association_basics.html – 2010-09-28 20:35:04

回答

3

你必须创建一个名为路由模式,应该是这样的:

先用脚手架生成

rails g scaffold Route start_place_id:integer end_place_id:integer distance:decimal 

运行迁移

然后您必须建立关系。一个地方可以是一个起点或一个终点,因为 这个关系的标识并不是微不足道的,我们必须指定类和外键才能正常工作(在一个简单的有很多关联的地方我们可以做has_many:routes和belongs_to的:地方,但事实并非如此) route.rb

class Route<ActiveRecord::Base 
belongs_to :start_place, :class_name=>"Place", :foreign_key=>"start_place_id" 
belongs_to :end_place, :class_name=>"Place", :foreign_key=>"end_place_id 
end 

在你place.rb你必须添加

class Place<ActiveRecord::Base 
    has_many :routes_as_start, :class_name=>"Place", :foreign_key=>"start_place_id" 
    has_many :routes_as_end, :class_name=>"Place", :foreign_key=>"end_place_id" 
end 

要建立一个关系,你可以这样做:

route = @place.routes_as_start.build 
route.end_place = Place.create 
route.save 

这也应该创建一个结束的地方。

+0

谢谢,这帮了我很多。 – 2010-09-29 21:36:35

+0

如果这是解决方案,请点击此帖子附近的小管,将其选为正确答案。 – dombesz 2010-09-30 08:31:28

相关问题