2009-01-15 71 views
1

說我有兩個資源,Project和Task。一個項目可以有許多任務;任務屬於一個項目。還有說我有任務嵌套在項目中routes.rb:「查找」嵌套資源關係中的「父」對象?

map.resources :projects do |project| 
    project.resources :tasks 
end 

能以編程方式發現這種關係嗎?基本上,我需要動態加載任意對象,然後確定它是否有「父」,然後加載該父對象。

任何想法?

回答

1

路由不會幫助你,因爲這只是爲了反過來使用。 你可以做的是別名與關係:父:


class Task 
    belongs_to :project 
    alias :project :parent 
end 

然後利用這種關係來檢測是否父對象可用:


if object.respond_to?(:parent) 
    # do something 
end 

而且,你可以用,如果多態路線路線設置正確:


polymorphic_url([object.parent, object]) 
+0

這發生在我身上,就像我昨晚睡着了一樣。可能是唯一的路線。謝謝! – 2009-01-15 13:40:49

0

上面的代碼確定了路線的關係,並幫助生成右側助手來創建路徑等。

您需要確定的是,關係在您的madels中正確聲明。在項目模型,你應該有:

has_many :tasks 

在你的任務模式,你應該有:

belongs_to :project 

一旦你已經設定了,你準備好了你想要的。

@task = Task.first 

unless @task.project.blank? 
    project_name = @task.project.name 
end