1

我在控制器中有以下代码。很难理解它。

allow user: :is_admin?, :except => [:new, :create]

很难理解除了方法在这里做什么。

4

4 回答 4

3

:expect在上面的行中表示允许用户对:new 和 :create之外if_admin?的所有操作返回 true 。希望有帮助。

于 2013-05-17T05:05:39.133 回答
1

:except不是方法,它是用作哈希键的符号。

你的代码搞砸了两种哈希样式,方法是allow

参数是一个哈希{:user => :is_admin?, :except => [:new, :create]}

于 2013-05-17T04:53:26.283 回答
0

有关正确的解释,请参阅允许方法的文档。但我的假设是

  • 允许管理员执行所有操作
  • 允许用户执行除 :new 和 :create 之外的所有操作
于 2013-05-17T06:22:09.593 回答
0

:except指定不能访问控制器中的:newand动作。:create但是,is_admin?是一个布尔值,如果条件为真,则计算结果为真。因此,如果用户是管理员,他将无法访问 :new 和 :create,但可以访问控制器中的所有其他操作。根据您的评论,我相信这就是您要问的。

如果他是管理员,您可以允许用户访问 :new 和 :create 的相反操作:except,方法是更改:except​​为:only

于 2013-05-17T06:36:33.810 回答