权威人士授权从其他型号

问题描述:

我需要授权基于该供应商已经得到邀请的项目。供应商有一个“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

+0

对不起。我不明白你的问题。这就像代码工作?如果现在。问题是什么。你能告诉我们查询 –

+0

是啊,我已经建立了模型关系的结果,而是试图弄清楚如何投入'秀?'权威人士策略,使其只允许访问有一个邀请 – HoosierCoder

如何根据供应商表中的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 
+0

基础的项目在你的提示中,使它适用于:'Supplier.find_by(user_id:user.id).projects.pluck(“projects.id”)。include? “show?'策略中的project.id'。你觉得这样干吗?如果是这样,你可以将其包含在你的答案,我会接受.. – HoosierCoder

+0

@HoosierCoder是的,但是如果你需要更多的帮助,您可以检查代码审查堆栈交流论坛 –

+0

@HoosierCoder非常感谢。祝你的程序好运! –