权威人士授权从其他型号
我需要授权基于该供应商已经得到邀请的项目。供应商有一个“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
?
如何根据供应商表中的
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
基础的项目在你的提示中,使它适用于:'Supplier.find_by(user_id:user.id).projects.pluck(“projects.id”)。include? “show?'策略中的project.id'。你觉得这样干吗?如果是这样,你可以将其包含在你的答案,我会接受.. – HoosierCoder
@HoosierCoder是的,但是如果你需要更多的帮助,您可以检查代码审查堆栈交流论坛 –
@HoosierCoder非常感谢。祝你的程序好运! –
对不起。我不明白你的问题。这就像代码工作?如果现在。问题是什么。你能告诉我们查询 –
是啊,我已经建立了模型关系的结果,而是试图弄清楚如何投入'秀?'权威人士策略,使其只允许访问有一个邀请 – HoosierCoder