我在 Rails 3.1 应用程序上使用 Devise 和 Cancan gem。
我向用户添加了几个额外的列。
我设法定义了这些能力并且它们工作正常,我可以看到它工作但我还没有弄清楚如何取消授权操作(例如:更新),因为我无权访问设计或用户控制器?
那是怎么工作的?
我在 Rails 3.1 应用程序上使用 Devise 和 Cancan gem。
我向用户添加了几个额外的列。
我设法定义了这些能力并且它们工作正常,我可以看到它工作但我还没有弄清楚如何取消授权操作(例如:更新),因为我无权访问设计或用户控制器?
那是怎么工作的?
向用户添加一个字段,比如说:approved
并使其只有管理员可以访问。
在您的 中编写一个过滤器ApplicationsController
,因为您将所有内容都保持干燥,一旦您开始使用授权,您将大量使用它。
def verify_approval
unless current_user.approved
flash[:error] = I18n.t("not_approved")
redirect_to(root_path)
end
end
然后在用户需要权限的地方使用该过滤器:
class RandomsController
before_filter :verify_approval, only: [:update]
巴姆,完成。没有编辑设备或UsersController
.
或者,尝试在能力.rb 中使用以下内容
if user.role? :admin
can [:create, :read], [Model1, Model2]
end
if user.role? :user
can [:read], Model1, :id => user.id
end
这将允许管理员创建或阅读但不能更新。并允许用户读取属于他们的 Model1。如果您创建自定义操作,例如“copy_model”,您可以将其添加到 ability.rb
...
can [:copy_model, :read], Model1, :id => user.id
...