用 CanCan(can) 设计

Devise with CanCan(can)

我似乎找不到这方面的好教程,我有点碰壁了。

我正在使用 rails 4.2.0 和基本的 CRUD 应用程序。对于身份验证,我使用的是 devise,对于角色,我使用的是 Cancancan,因为它们具有相当易于理解的文档。

我有两种类型的用户:

用户和管理员。

管理员可以与所有模型交互。添加-编辑-删除等

用户只能与特定模型交互。这将是一个预订系统。

我不太确定设置它需要经历的过程。我是否需要为每种用户类型进行完整的 rails 生成,或者我是否可以只使用 Devise 生成?除此之外,我如何选择用户类型?到目前为止,我有两个有效的登录链接。

我遇到的主要问题是在 cancancan 中定义角色。

任何关于此主题的help/questions将不胜感激。

为简单起见,您可以在用户 table 上添加一个 admin 布尔值列。您将使用 user.admin? 检查管理员用户。

这是迁移的样子。

> rails g migration add_admin_to_users

在您的迁移文件中,我会在 运行 之前将默认值设置为 false。

class AddAdminToUsers < ActiveRecord::Migration
  def up
    add_column :users, :admin, :boolean, null: false, default: false
  end

  def down
    remove_column :users, :admin
  end
end

默认情况下,您的用户不是管理员。但是,您可以使用 user.update_column(:admin, true).

轻松地使用户成为管理员

有了这个,您应该能够遵循 CanCanCan 文档,因为我相信它们非常广泛。

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new

    if user.admin?
      # admin abilities
    else
      # non-admin abilities
    end
  end
end

http://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities