category.rbРЕЛЬСЫ: Отношения (Выделить все ответы от всех тем)
has_many :topics
topic.rb
belongs_to :category
has_many :answers
answer.rb
belongs_to :topic
Вопрос:
Как я преформы запросов, как Category.first.topics.answers.count
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 })
здесь мы присоединяем на вложенной ассоциации, а затем с помощью ИНЕКЕ для фильтрации обнаруживаемых с помощью category_id
примечание: я думаю, что это правильный синтаксис, но вам, возможно, придется возиться с множеством topic
и category
там
я действительно забыл о has_many: через, но это всегда здорово имеют множество решений 1 проблема. Спасибо! – Src