关于ruby on rails:可以为设计用户模型进行设计

CanCan + Devise for the devise user model

使用devise,我有一个User模型。我没有用户控制器。

要使用Can,我需要在控制器顶部做以下操作吗?

1
2
3
# Authorization w Devise & CanCan
before_filter :authenticate_user! # Devise, signed in users only
load_and_authorize_resource # CanCan

在何处添加此代码,以便在没有用户控制器的情况下可以拥有User模型的权限?

谢谢


您可以将该代码添加到需要身份验证的任何控制器中,不需要UsersController

1
before_filter :authenticate_user!

此行要求使用devise登录的有效用户,因此,如果您尝试使用before_filter来访问控制器而未登录,则将被devise重定向到sign_in_path

1
load_and_authorize_resource # CanCan

另一行将实例变量填充为默认值(如果尚未设置),然后使用Ability类检查您的特权,因此,假设您拥有ArticleController,它将在后台执行以下操作(实际代码基于当前操作)

1
2
3
# for the show action
@article = Article.find(params[:id])
raise CanCan::AccessDenied unless can(:read, @article)

can(:read, @article)语句是CanCan库的壁炉,它将根据您的能力等级返回布尔值。可以在这里阅读更多内容

如果整个应用程序都需要身份验证,则只需将before_filter :authenticate_user!行添加到ApplicationController