【问题标题】:Rails - Pundit - resolve method not operating correctlyRails - Pundit - 解决方法无法正常运行
【发布时间】:2016-07-24 00:20:47
【问题描述】:

我正在尝试弄清楚如何在我的 rails 4 应用中使用 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-

我没有收到任何错误,但是当我以文章作者的用户身份登录时,我希望获得属于我(作为该用户)的所有文章。相反,我只获得了所有已发表的文章(这是我的 resolve 方法中的最后一个替代方法)。

谁能看出我哪里出错了?

【问题讨论】:

    标签: ruby-on-rails ruby pundit


    【解决方案1】:

    我相信这条线是问题所在:

    user == @user.id
    

    应该是:

    user == @user
    

    因为User 对象永远不会等于Integer 对象,这是您在User 对象上调用id 时得到的结果。

    另外,查看Pundit GitHub page 并向下滚动到有关测试的 RSpec 部分。 您应该始终测试身份验证和授权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2015-12-08
      • 2019-02-08
      • 1970-01-01
      相关资源
      最近更新 更多