2012-02-17 13 views
1

さまざまなユーザーを持つレールB2Bアプリケーションを構築します。私はDeviseとCanCanを使って社内スタッフのアクセスを制限することは明らかですが、サプライヤと顧客に自分のログイン情報を与えることもできるようにしたいと考えています。顧客はかなりシンプルになりますが、サプライヤ(ラベル)のログインにより、自社の製品および販売データのみを表示および修正できるようにしたいと考えています。Devise/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'ロールを定義して、ビュー内でlabel_idを使用することは簡単なのでしょうか?それが正しいアプローチなら、コントローラ/ビューのlabel_idにコンテンツをロックダウンするにはどうしたらいいですか?ロールベースのif文?

ありがとうございます!することができますあなたのroutes.rbファイルに次に

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 

:あなたが最初に行う必要があるだろう何

答えて

2

はサプライヤー、顧客とスタッフのように、いくつかのカンカン役割を定義し、フォークを処理するために、間質のコントローラを作成していますあなたのコントローラのルートアクションまたはインデックスアクションのいずれかにユーザーを送ります。最初にCheckingController#indexに送信します。これはCanCanの役割に基づいてリダイレクトされます。

+0

多くのおかげでポインタに感謝しています。どうぞよろしくお願いします。 – Raoot

関連する問題