2011-11-16 34 views
5

我有一個Search模型和控制器。業務邏輯是,如果用戶的關鍵字完全匹配產品的型號,則將其重定向到產品頁面。最佳實踐 - 模型中的重定向? - Rails 3.1

在這種情況下,我應該從模型內部進行重定向嗎(大部分邏輯已經駐留)?

或者我應該返回一個標誌或東西給控制器,以便我可以處理重定向?

回答

9

模型對象不能回答不應該做重定向。應用程序邏輯是控制器的責任,所以控制器應該詢問模型對象(作爲請求的結果)產品是否與型號相匹配,然後控制器執行重定向。模型對象不應該知道任何關於控制器或視圖的信息。這是由Rails實現的"Model-View-Controller concept"的一部分。

Rails將模型實現爲ActiveRecord pattern,因此模型對象負責數據庫並且包括對數據庫的搜索是可以的。查看Rails Guides for ActiveRecord Queries中的許多選項,瞭解模型對象的責任。

+0

是否可以在模型中執行所有搜索db(跨多個模型)的run_search函數,還是最好讓控制器也這樣做? – Jacob

+0

我會擴大我的答案。 – mliebelt

4

永遠記住MVC模式:MVC in Rails

型號不得利用重定向或相關的控制器一些其他的東西照顧。讓重定向在控制器中。