Простая проблема, которую я не могу понять.
Как получить список связанных элементов, которые связаны со списком элементов другого типа. Например, от Clinician
has_many
patients
до care_group_assignments
и patients
has_many
assessments
. Я хочу, чтобы список patients
дал мне список всех их assessments
. @patients
дает мне список patients
; как мне получить их списки assessments
? Я хочу, чтобы @assessments
был списком всех assessments
, связанных со всеми patients
, связанными с данным clinician
.
У меня есть отношения has_many :through между «Врачем» и «Пациентом» с объединенной моделью «CareGroupAssignment».
clinician.rb (упрощенный)
class Clinician < ActiveRecord::Base
has_many :patients ,:through=> :care_group_assignments
has_many :care_group_assignments, :dependent => :destroy
has_many :assessments, :through => :patients
belongs_to :user
accepts_nested_attributes_for :user, :allow_destroy => true
end
терпеливый.rb
class Patient < ActiveRecord::Base
has_many :clinicians ,:through=> :care_group_assignments
has_many :care_group_assignments
has_many :assessments, dependent: :destroy
belongs_to :user
accepts_nested_attributes_for :user, :allow_destroy => true
end
care_group_assignments.rb
class CareGroupAssignment < ActiveRecord::Base
belongs_to :clinician
belongs_to :patient
end
Я попытался использовать ответы из 4720492, 9408931 и 15256541.
Я пытаюсь получить список в ClinicianController:
def show
@clinician = Clinician.find_by(id: params["id"])
@patients = @clinician.patients
@assessments = @patients.assessments.order("created_at desc")
end
current_clinician
определяется в моем ApplicationController
как:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :current_user
before_action :require_user
helper_method :current_clinician
before_action :require_clinician
def current_user
@current_user ||= User.find_by!(auth_token: cookies[:auth_token]) if cookies[:auth_token]
end
def require_user
if current_user.nil?
redirect_to new_session_path
end
end
def current_clinician
current_user.clinician
end
def require_clinician
if current_clinician.nil?
redirect_to new_session_path
end
end
end
Прямо сейчас я получаю NoMethodError in CliniciansController#show
,
неопределенный метод `оценки' для #Patient:.....
Рельсы 4.1.8, рубин 2.2.1p85, PostgreSQL
Спасибо
@esas_assessments = @patients.assessments.order("created_at desc")
? - person akbarbin   schedule 22.09.2015patients
дал мне список всех ихassessments
.@patients
дает мне список пациентов; как мне получить их спискиassessments
? Я хочу, чтобы@assessments
был списком всехassessments
, связанных со всемиpatients
, связанными с даннымclinician
. - person Skiapex   schedule 22.09.2015