2016-07-24 58 views
0

我想弄清楚如何在我的rails 4應用程序中使用pundit。Rails - Pundit - 解決方法無法正常運行

我有一篇文章政策和一篇文章索引視圖。

在文章策略中,我有一個解決方法,其範圍適用於不同類型的用戶。

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部分進行測試。 您應該始終測試身份驗證和授權。