2016-07-24 68 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部分进行测试。 您应该始终测试身份验证和授权。