Rails объединяют две разные таблицы, что приводит к каскаду данных к следующим строкам - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь объединить две разные таблицы вместе, чтобы получить отчет об активности пользователя, но я получаю неправильные результаты, и после получения строк результатов у меня возникают проблемы при работе с ним.

Вот мой query:

User.joins(:contract_comments).joins(:audits).where(id:1).where(contract_comments: { created_at: (dateRange) }).where(audits: { created_at: (dateRange) })

Это дает в 4 раза больше результатов, чем ожидалось, например:

[#<User id: nil, audit_id: 56237, contract_comment_id: 4511>,
 #<User id: nil, audit_id: 56238, contract_comment_id: 4511>,
 #<User id: nil, audit_id: 56239, contract_comment_id: 4511>,
 #<User id: nil, audit_id: 56240, contract_comment_id: 4511>]

Это результат после получения dateRange, который должен иметь только один contract_comment и никаких аудитов .

Я пробовал разные подходы для решения, но это был самый многообещающий. Но я застрял сейчас и мне нужна помощь, как сделать этот отчет. Причина, по которой мне нужна эта таблица, состоит в том, чтобы отсортировать первые 25 строк по дате независимо от таблицы, из которой она получена.

Спасибо!

1 Ответ

2 голосов
/ 02 апреля 2020

Попробуйте User.joins([:contract_comments,:audits]).where(id: 1, contract_comments: { created_at: dateRange }, audits: { created_at: dateRange } )

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