Rails 6 записей запросов, где включает в себя условия и количество - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть модель category и модель с именем events, где категория has_many события.

Событие имеет столбец scheduled_at

Я хочу получить все категории, которые имеют события в будущем.

Это какой-то псевдокод, с которым я играю:

Category.includes(:events).where("events.scheduled_at > ?", Time.current).count(events) > 0

Любые идеи, как мне правильно составить этот запрос?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Чтобы получить все Категории, выполните следующие действия:

@categories = Category.includes(:events).where("events.scheduled_at > ?", Time.current)

Выше будут загружены все категории, соответствующие условию, и для подсчета категорий используйте загруженные записи

@category_count = @categories.size
0 голосов
/ 19 апреля 2020

Если ваша проблема в ActiveRecord :: StatementInvalid error no such column: events.scheduled_at, рассмотрите возможность добавления ссылок в конце вашего запроса, например,

Category.includes(:events).where("events.scheduled_at > ?", Time.current).references(:events)

Кроме того, вместо count(events) просто используйте размер

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