我应该使用哪种导轨控制器?

时间:2013-04-02 02:58:14

标签: ruby-on-rails controller rails-routing

在我的应用Users中可以Like Programs。每个都是模型,Like是多态的。

在某些时候,我希望看到Users一个Like或全部Program一个Programs的所有User Likes

likeslikers控制器中执行usersprograms控制器操作会更好吗?或者我应该将likes控制器作为嵌套资源同时使用usersprograms操作(或者检查正在使用哪个嵌套资源的索引)?

我意识到所有这些都可行,但不确定Rails最佳实践是什么。

2 个答案:

答案 0 :(得分:1)

我会将您的应用构建为UsersController,其likes成员操作会返回用户喜欢的Program。然后使用ProgramsController成员操作likers,其中User代表该程序。

为了进一步简化操作,您还可以在show操作中添加用户喜欢的内容(同样,在程序的show操作中显示喜欢某个程序的用户),尽管您可以通过这样做,最终获取的信息超出show行动所需的信息。

答案 1 :(得分:1)

说实话,你会有一个LikesController,其中的'create'动作需要一个user_id和一个program_id。用户可能会登录(并且不会在URL中传递),创建一个Like会有意义,将program_id传递给看起来像这样的url:

POST /likes, :params => { :program_id => ___ }

您可能希望显示喜欢列表(索引页面),也许允许用户编辑和删除。如果是这种情况,那么您的所有操作都将在likes_controller上。通常,这取决于你的情况,但是一个安静的设计通常是正确的开始。