2016-07-30 16 views
0

にアクセスできるようにしたい:ネストされたリソース、私はCURRENT_USERが、私は私の<code>routes.rb</code>の下に、以下のいる

resources :users do 
    resources :submitted_terms, only: [:index, :create, :show] 
    end 

私だけcurrent_userは(ログインしているユーザー)自分を見ることができるようにしたいですindexshowという観点からは、submitted_termsとなります。他のユーザーのindexshowのユーザーを見ることができないようにすべきであり、他のユーザーがそのユーザーを見るべきではありません。

私はこれを実装する方法を知っていると思うが、それは私に面倒な感じです。何かご意見は?

答えて

0

before_actionフィルタを使用できます。

before_action :correct_user, only: [#action for which you need this filer] 

    def correct_user 
    @submitted_term = SubmittedTerm.find(params[:id]) 
    unless @submitted_term.user == current_user 
     flash[:notice] = "Insuffient privlage" 
     redirect_to #some path or render 
    end 
    end 

ユーザーがログインされているかどうかチェックするためのコードを変更したり、新しいアクション(フィルタ)を作成する必要があるかもしれません

+0

それは私がやったことだが、それは、ネストされたルートでいた場合、私はあなたがする必要があると思ううん'@user = SubmittedTerm.find(params [:user_id])。user'のようなことをします。 –

+0

私は自分の答えを編集しました。それが動作するかどうかを確認してください –

+0

SubmittedTerm.find(params [:id])を使用する必要があります。 –

関連する問題