Rails has_many через предложение where - PullRequest
0 голосов
/ 07 мая 2018

Мне нужна помощь, чтобы чего-то достичь.

Возможно ли, что мой анализ has_many :klasses, through: :subjects, но отфильтрован с использованием атрибутов из таблицы соединений AnalysisSubject? Или мои модели должны быть разными?

class Analysis
  has_many :analysis_subjects, dependent: :destroy
  has_many :subjects, through: :analysis_subjects
  has_many :klasses, -> { where(year: ??????, semester: ??????), through: :subjects
end

class AnalysisSubject
  belongs_to :analysis
  belongs_to :subject

  # There are year:integer and semester:integer attributes
  # I want to use those attributes in my where clause for analysis.klasses
end

class Subject
  has_many :klasses
  has_many :analysis_subjects
  has_many :analyses, through: :analysis_subjects
end

class Klass
  belongs_to :subject
end

Я использую Rails 5, если это важно. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 07 мая 2018

Да, но вы должны позволить себе это по-другому: вы должны объявить where в has_many :filtered_analysis_subjects.

class Analysis
  has_many :filtered_analisys_subjects, -> { where(year: x, semester: y }, foreign_key: "analysis_id", class_name: "AnalysisSubject", dependent: :destroy 
  has_many :subjects, through: :filtered_analysis_subjects
  has_many :klasses, through: :subjects
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...