2010-03-29 174 views
0

我希望能够自己编辑和删除资源,但不允许应用程序的用户这样做。限制编辑和删除

有没有在Rails中这样做的简单方法?

一个不完整的解决方案只是从索引视图中删除“删除”和“编辑”按钮,但不会禁用它们通过直接HTTP请求来执行此操作的能力。

的运转轨道2.2.2和1.8.7的红宝石

回答

3

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 
1

我会建议CanCan。这非常简单,您只需要使用ability.rb来定义不允许用户进行操作。

0

看看active_scaffold,admin_data和typus(所有可用的github上)。他们都是插件,使得构建管理方面的事情变得轻而易举,以便您可以轻松地将管理内容与面向用户的内容分开。就我个人而言,我喜欢typus,但它需要您有一个typus_users表,它与其他任何用户表分开,这可能不符合每个人的口味。另一方面,如果你不想要任何复杂的东西,或者你宁愿从头开始构建它,一个简单的before_filter就可以做到这一点......