在我的应用程序中,我有一个用户模型/控制器。一个用户可以拥有多个视频、图像和博客项目。用户,并且项目可以有评论。所以我有以下控制器
- 用户
- 用户/评论
- 用户/图片
- 用户/图片/评论
- 用户/视频
- 用户/视频/评论
- 用户/博客
- 用户/博客/评论
问题是,所有的注释控制器几乎都是一样的,而且代码变得难以管理。现在我想指定一个中心位置,例如一个应用程序级别的 CommentsController,它具有从子控制器调用的方法。
最好的方法是什么?
例如,以下代码将如何处理此类更改:
class User::Picture::CommentsController < ApplicationController
def delete_all
@user = User.find(params[:user_id])
@picture = @user.pictures.find(params[:picture_id])
if @picture.has_access(current_user)
@picture.comments.destroy_all
redirect_to :back, :notice=>t(:actionsuccesful)
else
redirect_to :back, :alert=>t(:accessdenied)
end
end
end
@user && @picture 初始化在不同的方法(destroy、delete_all、create、index)中是相同的。可以将它们移动到特定于子控制器的 before_filter 中吗?然后,delete_all 会在 CommentsController 中实现吗?