如何访问未确认的用户和已确认的用户(Rails / Devise / cancan / rolify)

时间:2013-07-14 18:51:44

标签: ruby-on-rails ruby-on-rails-3 devise cancan

我正在Rails上构建一个日常交易应用程序来训练自己使用Ruby on Rails。

我已经使用devise / cancan / rolify安装了身份验证。

我想在cancan中创建两种类型的用户

  • 确认的用户
  • 尚未确认的用户

我怎样才能实现这一目标?我如何访问那些拥有和未确认其帐户的设备用户(即点击通过电子邮件发送给他们的激活链接)。

1 个答案:

答案 0 :(得分:2)

无需为confirmedunconfirmed添加角色。您可以在user.confirmed?文件中使用ability.rb来控制授权:

# models/ability.rb

if user.confirmed?
  can :manage, Model
end

if !user.confirmed?
  can :view, Model
end

注意:您可以使用if/else构造,但我更喜欢将规则很好地分开。

关于你的评论,你重新实现了已经完成的工作。使用cancan,您可以使用load_and_authorize_resource(请参阅:here)。

class ProductsController < ActionController::Base
  load_and_authorize_resource
end

就是这样。如果用户尝试在没有所需权限的情况下进行访问,则会收到“未经授权”的响应。

我强烈建议您仔细阅读rolifycancan的文档。