2016-07-24 15 views
0

私のレール4アプリで専門家を使う方法を理解しようとしています。Rails - Pundit - resolveメソッドが正常に動作しない

私は記事ポリシーと記事インデックスビューを持っています。

記事ポリシーでは、さまざまな種類のユーザーに対してスコープを持つ解決方法があります。

def resolve 
    if user == @user.id 
     scope.all.where(user_id: user.id) 
    elsif user.has_role?(:org_approver) 
     scope.to_be_reviewed 
    else 
     scope.in_state(:publish) 
    end  
end 

私のインデックスショーでは、私の解決方法でどのカテゴリーに合っているかによって、各ユーザーにアレイの記事を表示することを期待しています。

<% policy_scope(Article).sort_by(&:created_at).in_groups_of(2) do |group| %> 
    <div id="portfolioFiltering" class="masonry-wrapper row"> 
     <% group.compact.each do |article| %> 
     <div class="col-md-4 col-md-offset-1 portfolioitem Scienza"> 
     <div class="portfolio-item text- 

私はすべてのエラーを得ることはありませんが、私は記事の著者であるユーザーとしてログインしたときに、私は(そのユーザとして)私に属する記事のすべてを得ることを期待。代わりに、公開されたすべての記事だけを取得します(これは私の解決方法の最後の選択肢です)。

誰かが間違っているのを誰でも見ることができますか?

答えて

0

私はこの行が問題であると考えている:

user == @user.id 

それは次のようになります。

user == @user 

Userオブジェクトを使用すると、ときに取得されるものですIntegerオブジェクトに等しくなることはありませんのでUserオブジェクトのidに電話してください。

また、Pundit GitHub pageを見て、テストのRSpecセクションまでスクロールしてください。 認証と承認を常にテストする必要があります。

関連する問題