ActiveRecord: выбор has_many ограничен has_many другой модели - PullRequest
0 голосов
/ 18 июня 2019

Я хотел бы добиться чего-то следующего, где PersonSubject имеет много тем, но выбор этих тем ограничен выбором topics с помощью другой модели (то есть: с помощью subject):

class Topic < ApplicationRecord
  belongs_to :subject
end

class Subject < ApplicationRecord
  has_many :topics
end

class PersonSubject < ApplicationRecord
  belongs_to :person
  belongs_to :subject
  has_many :topics  # where the choices are limited to the subject.skills
end

Затем я хотел бы, если бы любой person_subject.subject.topics был удален (или ассоциация удалена), он автоматически обновил бы person_subject.topics, чтобы больше не "указывать" на Topic (s), которые были удалены.

Возможно ли это?

1 Ответ

0 голосов
/ 18 июня 2019

Вы можете использовать лямбду, чтобы установить произвольные фильтры для ассоциации. См. Что эквивалентно параметру has_many 'условие' в Rails 4?

has_many :topics, -> { where(skill: subject.skills) }

Я не знаю, что именно этот код будет работать, не видя вашей схемы (какой тип данных subject.skills и как вы объединяете это с темой?). Но, надеюсь, это приведет вас на правильный путь

1010 * редактировать *

в ответ на ваш комментарий, я думаю

has_many :topics, through: :skills

будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...