在我的应用Users
中可以Like
Programs
。每个都是模型,Like
是多态的。
在某些时候,我希望看到Users
一个Like
或全部Program
一个Programs
的所有User Likes
。
在likes
和likers
控制器中执行users
和programs
控制器操作会更好吗?或者我应该将likes
控制器作为嵌套资源同时使用users
和programs
操作(或者检查正在使用哪个嵌套资源的索引)?
我意识到所有这些都可行,但不确定Rails最佳实践是什么。
答案 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上。通常,这取决于你的情况,但是一个安静的设计通常是正确的开始。