我想实现以下目标,其中PersonSubject
有许多主题,但是这些主题的选择仅限于通过另一种模型(即:通过关联的{{ 1}}):
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
删除。
这可能吗?
答案 0 :(得分:0)
您可以使用lambda将任意过滤器放在关联上。参见What is the equivalent of the has_many 'conditions' option in Rails 4?
has_many :topics, -> { where(skill: subject.skills) }
我不知道这是确切的代码,如果不查看您的架构(subject.skills
的数据类型是什么,以及如何将其与主题结合在一起?)就可以使用。但希望这能使您走上正轨
编辑
我想回应您的评论
has_many :topics, through: :skills
会工作