2010-07-11 72 views
0

我是rails新手,正在開發內部內容管理應用程序。我製作了一個原型,但覺得它很混亂,還有更好的方法。我需要以下內容:Rails:嵌套的資源內容應用程序管理結構

我目前的原型使用工作流程(http://github.com/geekq/workflow)插件來管理項目和主題的狀態。我也研究了acts_as_tree和acts_as_list,但我不確定如何最好地組織事物。

========

項目(有標題,描述,期限,workflow_state)狀態:未公佈(如草案]發表(主題可以在檢查進出,等),歸檔(已完成的狀態)]

模塊(是項目[充當基]的子可以是許多;具有標題,描述,內容)

科(是模塊的子[充當組];可以很多;可選;具有標題,描述, 內容)

主題(是小節的小孩;可以很多;可訂購; (標題,說明,內容,工作流程狀態,owner_id,訂單)[狀態:新,checked_out,pending_review,review_required,已完成]

進程(是主題的子節點;可以是多個;可選;具有標題,描述,內容)

資源(是過程的孩子,可以有很多,可選的;文件;已稱號,resource_link)

-

(但是也有一些相關的項目還設有2個對象;引進和基本面,每個項目只有一個)

介紹(是項目的孩子;只有一個;具有:標題,描述,內容,workflow_state)[狀態:同一主題]

基本原理(是項目的子項;只有一個;具有:標題,描述,內容,workflow_state)[狀態:同一主題]

NB。我知道這些單詞中的一些是保留的,並且將需要別名。

========

我希望能使用類似URL結構:

/項目/:PROJECT_ID /模塊/:是模塊/節/:SECTION_ID /主題/: topic_id /進程/:PROCESS_ID /資源/:RESOURCE_ID

或(如果省略部分)

/項目/:PROJECT_ID /模塊/:模塊id /主題/:topic_id /進程/:PROCESS_ID /資源/: resource_id

========

任何反應非常感謝。

更新:Rails 2.3.8

回答

1

你沒有說你正在使用哪個版本的Rails。我爲此目的假設版本2。在你config/routes.rb您可以設置這樣的層次關係:

ActionController::Routing::Routes.draw do |map| 
    map.resources :projects do |projects| 
    projects.resources :modules do |modules| 
     modules.resources :topics do |topics| 
     topics.resources :processes do |processes| 
      processes.resources :resources 
     end 
     end 
    end 
    end 
end 

Rails的3路由器有一個類似的功能。

UPDATE:解決以下

的關聯規則在評論其他問題該應用程序有所反映上面的路由層次。考慮它們的一種方法是查看您在問題中提出的資源URL。沿着URL從左到右閱讀給你has_many的關係。從右向左閱讀給你belongs_to的關係。例如:

class Project < ActiveRecord::Base 
    has_many :modules 
end 

class Module < ActiveRecord::Base 
    belongs_to :project 
    has_many :topics 
end 

class Topic < ActiveRecord::Base 
    belongs_to :module 
    has_many :processes 
end 

的,您可以訪問孩子喜歡:

@project.modules 
@module.topics 
@topic.processes 

可選部分的問題需要你去思考這兩個有關路由和架構代表和協會。第一個是最簡單的。第二個是你需要小心的事情,以免太多的建模過度。路由規則可以修改如下:

ActionController::Routing::Routes.draw do |map| 
    map.resources :projects do |projects| 
    projects.resources :modules do |modules| 
     modules.resources :sections do |sections| 
     sections.resources :topics do |topics| 
      topics.resources :processes do |processes| 
      processes.resources :resources 
      end 
     end 
     end 
     modules.resources :topics do |topics| 
     topics.resources :processes do |processes| 
      processes.resources :resources 
     end 
     end 
    end 
    end 
end 
+0

我一直在使用該設置,但它似乎混亂,它會是很好,如果有更好的方法。它使變量和路徑很煩人。 – Blake 2010-07-11 14:02:53

+0

不確定你的意思是煩人或凌亂。上述規則滿足您要求的路線。你能否舉一個你不喜歡的樣子,你想要什麼呢? – bjg 2010-07-11 14:31:23

+0

我打算有兩個主要觀點。查看項目(顯示所有子項的輪廓爲主題級別的樹)和查看主題(顯示流程和資源)。其餘的只是編輯表單等。這意味着我在部分內部使用了許多分支,並且不得不保持傳遞變量。 – Blake 2010-07-12 03:08:01