У меня следующие отношения:
class Patient < ActiveRecord::Base
belongs_to :user
has_many :analyses, dependent: :destroy
end
class Analysis < ActiveRecord::Base
belongs_to :patient
end
Использовать области видимости в Patient очень просто, я только что сделал:
class Scope < Scope
def resolve
if user.admin?
scope.all
else
scope.where(user_id: user.id)
end
end
end
Но как я могу использовать это, чтобы получить весь анализ, который принадлежит только одному конкретному пациенту, используя метод разрешения?
Сейчас мой analysis_policy выглядит так:
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
И действие index в AnalysesController:
def index
@analyses = @patient.analyses
end
...
private
def set_patient
@patient = Patient.find(params[:patient_id])
end