我的一个控制器有近 100 种方法(例如路由),如果 id 参数无效,几乎每个控制器都从相同的代码开始重定向到错误页面,然后类似的检查该 id 的用户是否不属于用户帐户:
def something
@foo = Foo.find_by_guid(params[:id])
unless @foo
@msg ||= { :title => 'No such page!',
:desc => "There is no such page!" }
render :action => "error" and return
end
unless @foo.owner_id == current_user.id
@msg ||= { :title => 'Really?',
:desc => "There is no such page." }
render :action => "error" and return
end
考虑到代码正在渲染……然后返回,那么干掉那种页面 id 和所有者 id 验证的最佳方法是什么?
在这一点上我不想做的是将它卸载到像 CanCan 这样的黑盒角色和权限库......我的目标只是让应用内代码尽可能干净地处理这个问题。