我希望能够自己编辑和删除资源,但不允许应用程序的用户这样做。
在Rails中有一种简单的方法吗?
一个不完整的解决方案就是从索引视图中删除“删除”和“编辑”按钮,但这并不会禁止他们通过直接HTTP请求执行此操作。
运行Rails 2.2.2和ruby 1.8.7
答案 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应该可以做到这一点......