Ruby on rails更优雅的方式来validation用户只能编辑自己的内容

我目前正在validation用户只能通过以下方式编辑自己的内容

@posts = current_user.posts.find(params[:id]) 

是否有更简单的方法在所有控制器上执行此操作?

我有一个before_filter,要求用户必须登录,但它不会检查个人用户是谁。

我想知道是否有一个更优雅的解决方案只需要对before_filer方法进行一次编辑,而不是在每个需要保护的模型之前放置current_user方法。

CanCan是另一个提供授权function的gem。 它全部由一个ruby文件管理,然后可以与一行合并到控制器中。 还有一些视图助手,所以你可以使用<% if can? :update, @article %> <% if can? :update, @article %>在您的视图中<% if can? :update, @article %>

我在某个方面使用了一个框架,让你在查找查询中加入强制条件,但我不认为这是(本机)可以使用Rails。 可能有一个插件。

但是,有时您需要查询超出单个用户的上下文,因此您需要一种方法来覆盖它,可能使用before_filter的:except参数。 但是你必须记住current_user关于例外方法中需要特定于用户的东西,而忘记指定它可能非常危险。

你可以通过以某种方式覆盖模型的查找function来为绝大多数情况保存一点打字,但是你也会使exception变得非常丑陋且具有潜在的危险性。

你检查了盾吗? 如果您不愿意手工编写代码,那么您可以查看aegis。 满足您的要求。 它也有大量的文档。 http://github.com/makandra/aegis

看到这个:

  • 没有用户登录时检查权限

  • 检查权限