Ruby on rails HABTM-rails关系中的权威范围

Ruby on rails HABTM-rails关系中的权威范围,ruby-on-rails,ruby,ruby-on-rails-4,has-and-belongs-to-many,pundit,Ruby On Rails,Ruby,Ruby On Rails 4,Has And Belongs To Many,Pundit,我当前的索引操作如下所示: def index @proposals = current_user.proposals end def index @proposals = policy_scope(Proposal) end class Scope < Scope def resolve if user.admin? scope.all else user.proposals # HO

我当前的索引操作如下所示:

  def index
    @proposals = current_user.proposals
  end
  def index
    @proposals = policy_scope(Proposal)
  end
  class Scope < Scope
    def resolve
      if user.admin?
        scope.all
      else
        user.proposals # HOW DO I DO THIS WITH THE SCOPE?
      end
    end
  end
def resolve
  if user.admin?
    scope.all
  else
    scope.joins(:users).where(proposals_users: { user_id: user.id })
  end
end
但我想这样做:

  def index
    @proposals = current_user.proposals
  end
  def index
    @proposals = policy_scope(Proposal)
  end
  class Scope < Scope
    def resolve
      if user.admin?
        scope.all
      else
        user.proposals # HOW DO I DO THIS WITH THE SCOPE?
      end
    end
  end
def resolve
  if user.admin?
    scope.all
  else
    scope.joins(:users).where(proposals_users: { user_id: user.id })
  end
end
我在
用户
提案
之间有一个
has\u和
关系

我开始在我的应用程序中使用
Pundit
gem,但我不知道如何定义范围,以便让普通用户具有上面所示的行为

我想这样做:

  def index
    @proposals = current_user.proposals
  end
  def index
    @proposals = policy_scope(Proposal)
  end
  class Scope < Scope
    def resolve
      if user.admin?
        scope.all
      else
        user.proposals # HOW DO I DO THIS WITH THE SCOPE?
      end
    end
  end
def resolve
  if user.admin?
    scope.all
  else
    scope.joins(:users).where(proposals_users: { user_id: user.id })
  end
end
但是在HABTM的情况下,我不知道怎么做


有什么帮助吗?

您可以使用
加入
获取与用户相关的建议。大概是这样的:

  def index
    @proposals = current_user.proposals
  end
  def index
    @proposals = policy_scope(Proposal)
  end
  class Scope < Scope
    def resolve
      if user.admin?
        scope.all
      else
        user.proposals # HOW DO I DO THIS WITH THE SCOPE?
      end
    end
  end
def resolve
  if user.admin?
    scope.all
  else
    scope.joins(:users).where(proposals_users: { user_id: user.id })
  end
end

这正是我想要的。