RAILS:关系(Select 所有主题的所有答案)
RAILS: Relations (Select all answers from all topics)
category.rb
has_many :topics
topic.rb
belongs_to :category
has_many :answers
answer.rb
belongs_to :topic
问题:
我如何执行 Category.first.topics.answers.count
这样的查询
使用 has_many :through
关系:
# Category.rb
has_many :topics
has_many :answers, through: :topics
现在您可以像这样访问所有主题的所有答案:
Category.first.answers.count
如果您在架构配置上进行了设置(即不使用 has_many :through
),您会希望从 Answers
开始并利用几个 join
来获得至 Category
Answers.joins(topic: :category).where(categories: { id: category_id })
这里我们加入一个嵌套关联,然后使用 where 子句通过 category_id
过滤掉
注意:我认为这是正确的语法,但您可能需要 fiddle 周围有多个 topic
和 category
category.rb
has_many :topics
topic.rb
belongs_to :category
has_many :answers
answer.rb
belongs_to :topic
问题:
我如何执行 Category.first.topics.answers.count
使用 has_many :through
关系:
# Category.rb
has_many :topics
has_many :answers, through: :topics
现在您可以像这样访问所有主题的所有答案:
Category.first.answers.count
如果您在架构配置上进行了设置(即不使用 has_many :through
),您会希望从 Answers
开始并利用几个 join
来获得至 Category
Answers.joins(topic: :category).where(categories: { id: category_id })
这里我们加入一个嵌套关联,然后使用 where 子句通过 category_id
注意:我认为这是正确的语法,但您可能需要 fiddle 周围有多个 topic
和 category