2011-08-25 84 views
0

我試圖瞭解一些基本原則,當談到Rails方式和MVC設計模式時。基本MVC - 從另一個控制器編輯模型內容

假設我正在構建一個CMS。我有以下幾點:

/Pages 
controller 
model 
view 

當一個請求通過,它應該基於Pages控制器的URL檢查結果,和現在的網頁。

現在,讓我們說我有這樣的後端,簡單地說,一個管理部分:

Admin 
controller - index, edit actions 
view 

現在,管理部分認證通過Users模型,所以它不應該有自己的模型(至少我目前沒有看到這種需求)。用戶應該能夠編輯去往/來自Pages模型的內容。這是否需要明確說明?是我在控制器級渲染的東西,還是應該使用AJAX調用控制器?我很難掌握這個過程如何運作。

除了能夠編輯Pages之外,編輯類似Blog模型的問題也會遇到類似的問題,所以想要了解如何實現這一點將非常棒。

編輯:或者我過於複雜,因爲他們使用相同的(擴展)類?

回答

0

我使用Devise進行用戶驗證。 github上的Devise wiki有一個關於如何將簡單的管理員角色添加到用戶配置文件的頁面。或者,您可以使用CanCan來創建完整的授權模型。無論哪種方式,都提供了用於檢查用戶角色的輔助方法。

對於您想擁有隻讀和相同內容的可編輯視圖的CMS,我想我只是簡單地使用is_admin?控制器操作中的條件,如新建,創建,編輯,更新,銷燬。普通用戶只能訪問索引和顯示。

您可以在路由中使用「admin」命名空間(檢查路由上的Rails指南),然後將所有這些管理操作放到一個控制器中,在基本控制器中保留索引並顯示,然後在您的用戶中使用before_filter管理員控制器保持代碼更清潔。

視圖模板也可以使用和is_admin? (或類似的)輔助方法來暴露某些功能/鏈接等。

+0

感謝您的洞察力。我想我對這個概念有所瞭解,但是我不確定的一件事情就像is_admin一樣?條件 - 由用戶模型確定,否?其他控制器如何訪問該模型?它有魔力嗎? :) – userrrrr

相關問題