2011-02-05 36 views
0

我有一個文章控制器,它在一個更新操作中管理所有文章關係,如作者,翻譯,相關文章等。在Rails中以方便的方式使用MVC

頁面包含一系列具有搜索和排序功能的「列表」,CRD操作,用於創建新的和管理現有關聯記錄的表單。

所有這些東西都由ArticleController編輯和更新操作以及每個列表的一部分模板管理。

我想通過添加其他搜索表來查找關聯記錄來擴展功能。稍後我會添加一些其他功能。

我覺得這種方式(所有關聯管理在一個編輯頁面)遠不方便。所以,最好是爲每個列表創建一些特殊的控制器,如:

/articles/1/edit/authors 

這個控制器的名稱應該是什麼?它應該是ArticleController或PeopleController或ApplicationController的子項嗎?

也許一切還好,我是偏執?)

UPD

所有MVC條件sctictly滿足。問題是:

在一個控制器中管理所有關係是否好。不僅添加/刪除關係,有時會創建一個新的,如@ article.authors.find_or_create_by_name(name)。鑑於關係不僅僅是選擇標籤!它們是具有自己的搜索,排序和分頁功能的完全自動錶格。

如果有人不明白我,讓問不同的方式:

如何創建一個「子控制器」:如果我們有ArticleController和編輯操作。 ArticleController應該只管理Article模型中的字段。而一些子控制器應該管理關係。

爲什麼我需要它? 讓我們爲這樣的頁面添加一個AJAX:沒有遇到嚴重的問題,但是在每個AJAX調用中ArticleController.update/edit操作一個查詢,並且可能會做一些非常規的工作,比如爲模型建立Arel關係,永遠不會被使用。我喜歡把工作分成小的獨立部分,而不是建立一個巨大的控制器,它可以做所有事情。

回答

2

你的文章controller不應該管理關係。這應該在你的model。查看活躍的記錄callbacks。您可以在回調中完成與管理作者,翻譯等相關的所有內容。例如,在一個after_updatecallback

你也想要使用nested resources。例如,您的authors嵌套在您的articles

+0

路線當然關係添加/刪除模型。在控制器中我只是做@related_articles = @ article.related_articles或@ article.related_articles <<文章或@ article.related_articles.delete(文章)等等 – AlexParamonov 2011-02-06 14:10:51

+0

嵌套資源真的有幫助 – AlexParamonov 2011-02-06 15:58:57

1

也許你可以,例如,有一個作者控制器,將管理作者< - >文章關係。 不要忘記,您可以使用「連接」模型來處理所涉及的兩個模型之間的關係。 你可以有像

edit_article_authorships GET /articles/:article_id/authorships/edit(.:format) {:controller=>"authorships", :action=>"edit"} 
相關問題