2010-09-28 25 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

相關問題