2012-02-17 55 views
1

构建一个拥有各种用户的rails B2B应用程序。我很清楚限制使用Devise和CanCan的内部人员的访问权限,但我希望能够为供应商和客户提供自己的登录。客户将非常简单,但是,我想确保供应商(标签)登录使他们仅查看和修改自己的产品和销售数据。设计/ CanCan - 限制性内容

模型大致是:

User (as setup by Devise) 
Label [has_many releases] 
Release [belongs_to label/has_many products] 
Product [belongs_release/has_many tracks] 
Track [belongs_product] 

我猜我能在label_id字段中添加的用户模型和方法交往,但我需要内部用户(客户)可以访问查看全部标签数据。我还需要让一个标签有很多用户。

难道它只是通过Cancan定义一个'标签'角色来强制在视图中使用label_id的情况吗?如果这是正确的方法,那么我如何将内容锁定到我的控制器/视图中的label_id?基于角色的if语句?

在此先感谢!

回答

2

什么你首先要做的就是定义一些惨惨的角色,如供应商,客户和员工,然后创建一个非控制器来处理分岔:

class CheckingController < ApplicationController 
    def index 
    @path = case user.role 
     when 'supplier' 
     supplier_path 
     when 'customer' 
     customer_path 
     when 'staff' 
     staff_path 
     else 
     admin_sign_in_path #or whatever 
    end 

    redirect_to @path  
    end 
end 

然后在您的routes.rb文件就可以了首先将用户发送到CheckingController#index,根据您的CanCan角色重定向,将用户发送到您的控制器的根目录或索引操作。

+0

好的,非常感谢指针,将有一个去看看我如何继续。 – Raoot 2012-02-17 11:44:08