說我有兩個資源,Project和Task。一個項目可以有許多任務;任務屬於一個項目。還有說我有任務嵌套在項目中routes.rb:「查找」嵌套資源關係中的「父」對象?
map.resources :projects do |project|
project.resources :tasks
end
能以編程方式發現這種關係嗎?基本上,我需要動態加載任意對象,然後確定它是否有「父」,然後加載該父對象。
任何想法?
說我有兩個資源,Project和Task。一個項目可以有許多任務;任務屬於一個項目。還有說我有任務嵌套在項目中routes.rb:「查找」嵌套資源關係中的「父」對象?
map.resources :projects do |project|
project.resources :tasks
end
能以編程方式發現這種關係嗎?基本上,我需要動態加載任意對象,然後確定它是否有「父」,然後加載該父對象。
任何想法?
路由不會幫助你,因爲這只是爲了反過來使用。 你可以做的是別名與關係:父:
class Task
belongs_to :project
alias :project :parent
end
然後利用這種關係來檢測是否父對象可用:
if object.respond_to?(:parent)
# do something
end
而且,你可以用,如果多態路線路線設置正確:
polymorphic_url([object.parent, object])
上面的代碼確定了路線的關係,並幫助生成右側助手來創建路徑等。
您需要確定的是,關係在您的madels中正確聲明。在項目模型,你應該有:
has_many :tasks
在你的任務模式,你應該有:
belongs_to :project
一旦你已經設定了,你準備好了你想要的。
@task = Task.first
unless @task.project.blank?
project_name = @task.project.name
end
這發生在我身上,就像我昨晚睡着了一樣。可能是唯一的路線。謝謝! – 2009-01-15 13:40:49