Ruby on rails 使用pundit的嵌套资源的作用域

Ruby on rails 使用pundit的嵌套资源的作用域,ruby-on-rails,authorization,pundit,Ruby On Rails,Authorization,Pundit,我有以下关系: class Patient < ActiveRecord::Base belongs_to :user has_many :analyses, dependent: :destroy end class Analysis < ActiveRecord::Base belongs_to :patient end Analysis.joins(:patient)。其中(patient:{user\u id:user.id})应该可以工作。可能是where(

我有以下关系:

class Patient < ActiveRecord::Base
  belongs_to :user
  has_many :analyses, dependent: :destroy
end

class Analysis < ActiveRecord::Base
  belongs_to :patient
end
Analysis.joins(:patient)。其中(patient:{user\u id:user.id})
应该可以工作。可能是
where(病人:{user\u id:user.id})
我记不起来了。所以作为一个分析范围

class Analysis < ActiveRecord::Base
  belongs_to :patient
  scope :for_user ->(user_id) { joins(:patient).where(patient: { user_id: user_id })
end
类分析(user_id){joins(:patient)。其中(patient:{user_id:user_id})
结束
然后您将使用
Analysis.for\u user(user.id)

class AnalysisPolicy < ApplicationPolicy

  def new?
    true
  end

  def edit?
    record.patient.user_id == user.id
  end

  alias_method :show?, :edit?
  alias_method :create?, :edit?
  alias_method :destroy?, :edit?
end
  def index
    @analyses = @patient.analyses
  end

  ...
  private

  def set_patient
    @patient = Patient.find(params[:patient_id])
  end
class Analysis < ActiveRecord::Base
  belongs_to :patient
  scope :for_user ->(user_id) { joins(:patient).where(patient: { user_id: user_id })
end