限制编辑和删除

时间:2010-03-29 03:17:11

标签: ruby-on-rails

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

在Rails中有一种简单的方法吗?

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

运行Rails 2.2.2和ruby 1.8.7

3 个答案:

答案 0 :(得分: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 :(得分:1)

我会推荐CanCan。这很简单,你只需要ability.rb来定义不允许用户做什么。

答案 2 :(得分:0)

看看active_scaffold,admin_data和typus(所有在github上都可用)。它们都是插件,这使得构建事物的管理方面变得非常简单,以便您可以轻松地将管理内容与面向用户的内容分开。我个人喜欢typus,但它需要你有一个typus_users表,它与任何其他用户表分开,这可能不符合每个人的口味。

另一方面,如果你不想要任何复杂的东西,或者你宁愿自己从头开始构建它,那么简单的before_filter应该可以做到这一点......