2016-05-12 3 views
0

Ruby on Railsの新機能です。現在、ユーザーがログインして作成し、ダッシュボードに表示される独自の「キャンペーン」(データベースオブジェクト)を操作できるWebアプリケーションを作成しています。私はdevise gemを使用していますが、せいぜいパーミッションを使用せずにデータベースオブジェクトをフィルタリングするだけです。ダッシュボードに表示されるデータベースオブジェクトが、ログインしている現在のユーザーのみに固有であることを確認する必要があります。ログインしたユーザーのみのキャンペーンをダッシュ​​ボードに表示し、ユーザはダッシュボード上の他の誰かのオブジェクトにアクセス/参照することはできません。Railsの実行に関するヒントユーザー認証

+0

あなたcontollerでこれを試してみてください、あなたは[カンカン](https://github.com/ryanb/cancan)を試したことがありますか? – tadman

+0

私はcancanを試しましたが、ロールベースの認可が最良の解決策であるかどうかはわかりません。私は、各ユーザーが一意の役割を持っていることを確認する必要があります。私はcancanを使用すると、各ユーザーが新しい役割を割り当てられることは非常に複雑になると考えています。 –

+0

'record.user_id == session_user.id'がロジックに組み込まれているかどうかなど、あまりにも多くの作業をすることなく「自分の投稿だけを見ることができます」という役割を持つことができます。他の役割は、「何かを見る、自分の投稿だけを編集する」、「何かを見たり編集する」のようなものかもしれません。 – tadman

答えて

2

あなたのコントローラでbefore_filterが必要なようです。私はdeviseを使用していませんが、ちょうどGoogle "devise before action"と多くのリンクlike this oneが参考になるでしょう。別の注記では、excellent tutorialは、独自の認証システムを作成する方法を示しています。私はそれを2回することをお勧めします。 rails guidesも素晴らしいです。

更新:

def index 
    @user = User.find(params[:id]) 
    @campaigns = @user.campaigns.all 
end 
+0

ユーザー認証は問題ではありません、承認は私が立ち往生しているものです。ユーザーがログインしていない場合、彼はダッシュボードをまったく見ることができませんが、ログインしているときには、彼のオブジェクトと異なるユーザーによって作成された他のすべてのオブジェクトでダッシュボードを見ることができます。 –

関連する問題