2016-07-24 15 views
0

Ich versuche herauszufinden, wie man Pandit mit meinem Schienen 4 App verwenden.Schienen - Pundit - Lösung Methode funktioniert nicht richtig

Ich habe eine Artikelrichtlinie und eine Artikelindexansicht.

In der Artikelrichtlinie habe ich eine Resolve-Methode, die Bereiche für verschiedene Arten von Benutzern hat.

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 

In meinem Index zeigen, ich erwarte jedem Benutzer die Artikel der Reihe zu zeigen, je nachdem, welche Kategorie sie passen in in meiner Entschlossenheit Methode.

<% 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- 

Ich erhalte keine Fehler, aber wenn ich als Benutzer anmelden, die der Autor des Artikels ist, erwarte ich alle Gegenstände zu bekommen, um mir gehören, (als dieser Benutzer). Stattdessen erhalte ich nur alle veröffentlichten Artikel (das ist die letzte Alternative in meiner Auflösungsmethode).

Kann jemand sehen, wo ich falsch gelaufen bin?

Antwort

0

Ich glaube, diese Linie das Problem ist:

user == @user.id 

es sein sollte:

user == @user 

Da ein User Objekt wird nie zu einem Integer Objekt gleich sein, das, was Sie bekommen Sie, wenn Rufen Sie id auf einem User Objekt.

Schauen Sie sich auch Pundit GitHub page an und scrollen Sie zum Testabschnitt "RSpec". Sie sollten die Authentifizierung und Autorisierung immer testen.