Pundit从另一个模型授权

时间:2017-05-29 22:44:01

标签: ruby-on-rails pundit

我需要根据供应商获得的邀请来授权项目。供应商有一个" user_id"字段。

project.rb

has_many :invites
has_many :suppliers, :through => :invites

project_policy.rb

class ProjectPolicy < ApplicationPolicy
  attr_reader :user, :project

  def initialize(user, project)
    @user = user
    @project = project
  end

  def show?
    ##need help on the next line##
    if project.joins(:invites).joins(:suppliers).pluck("suppliers.user_id") == user.id
      return true
    else
      return false
    end
  end
end

如何根据供应商表格中的user_id显示相应的项目?如果这需要在范围内,那么如何检查范围中的suppliers.user_id

1 个答案:

答案 0 :(得分:2)

  

如何根据供应商表格中的user_id仅显示相应的项目?

The has_many :through Association

Invites.rb
  belongs_to :supplier
  belongs_to :project

项目模型有很多供应商

Project.rb
  has_many :invites
  has_many :suppliers, :through => :invites

供应商模型有很多项目

Supplier.rb
  has_many :invites
  has_many :projects, :through => :invites

找到供应商并使用has_many :projects, :through => :invites

Supplier.find_by(user_id: user.id).projects