Я создаю приложение, подобное CMS, в котором User
has_many Report
, которые принадлежат_100 * *.Существует также модель Deadline
между User
и Account
.
. Сейчас я создаю панель управления, на которой я хочу показать обзор учетных записей, для которых пользователь создал отчеты.в последние несколько дней.Чтобы усложнить ситуацию, я также хотел бы показать учетные записи, для которых у пользователя есть сроки исполнения.
Мой первый подход - создание метода экземпляра для модели User:
def recent_accounts
# find the accounts which where reported on the last 24 hours
accounts = reports.where('date > ?', 24.hours.ago).select(:account_id).map(&:account_id).uniq
dl = user_deadlines.all.select(:account_id).map(&:account_id).uniq
Account.includes(:past_deadlines, :deadlines).find((accounts+dl).compact)
end
Пока это работаетНе кажется, что это правильно.Поскольку речь идет об учетных записях, я думаю, что я должен преобразовать это в модель учетной записи.Это правильное предположение?
Я думал о том, чтобы создать для этого условную область, но я пытаюсь найти способ извлечения как информации из отчета, так и из срока исполнения.
Я читал об использовании merge
и joins
, но не могу по-настоящему осмыслить решение.Любая помощь очень ценится.