Ich muss ein Projekt basierend auf Einladungen autorisieren, die ein Lieferant bekommen hat. Der Lieferant hat ein Feld "user_id".Pundit autorisieren von einem anderen Modell
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
Wie ich nur die entsprechenden Projekte auf der user_id
in der Lieferanten-Tabelle basiert zeigen können? Wenn dies im Umfang enthalten sein muss, wie überprüfe ich dann die suppliers.user_id
im Umfang?
Entschuldigung. Ich verstehe deine Frage nicht. Funktioniert das wie Code? wenn jetzt. Was ist das Problem. Könnten Sie uns das Ergebnis der Abfrage zeigen? –
Ja, ich habe die Modellbeziehungen eingerichtet, aber ich versuche herauszufinden, was ich in die 'show?' Pandit-Richtlinie einfügen soll, damit es nur Zugriff auf Projekte erlaubt, die eine Invite – HoosierCoder