我希望能够自己编辑和删除资源,但不允许应用程序的用户这样做。限制编辑和删除
有没有在Rails中这样做的简单方法?
一个不完整的解决方案只是从索引视图中删除“删除”和“编辑”按钮,但不会禁用它们通过直接HTTP请求来执行此操作的能力。
的运转轨道2.2.2和1.8.7的红宝石
我希望能够自己编辑和删除资源,但不允许应用程序的用户这样做。限制编辑和删除
有没有在Rails中这样做的简单方法?
一个不完整的解决方案只是从索引视图中删除“删除”和“编辑”按钮,但不会禁用它们通过直接HTTP请求来执行此操作的能力。
的运转轨道2.2.2和1.8.7的红宝石
在controller
添加的before_filter,如下图所示:
class PostsController < ApplicationController
before_filter :require_god, :only => [:edit, :update, :destroy]
private
def require_god
unless current_user.id == (@@god ||= User.find_by_login("phleet")).id
flash[:notice] = "You don't have access to this page"
redirect_to root_path
return false
end
end
end
我会建议CanCan。这非常简单,您只需要使用ability.rb来定义不允许用户进行操作。
看看active_scaffold,admin_data和typus(所有可用的github上)。他们都是插件,使得构建管理方面的事情变得轻而易举,以便您可以轻松地将管理内容与面向用户的内容分开。就我个人而言,我喜欢typus,但它需要您有一个typus_users表,它与其他任何用户表分开,这可能不符合每个人的口味。另一方面,如果你不想要任何复杂的东西,或者你宁愿从头开始构建它,一个简单的before_filter就可以做到这一点......