В моей базе данных есть две таблицы: accounts
и transactions
. Они выглядят примерно так с соответствующими столбцами и примерами записей:
accounts
id | uid |
------------------
1 | "abcde" |
2 | "qwert" |
transactions
id | account_id | amount | balance |
------------------------------------
1 | 1 | 100 | 100 |
2 | 1 | 200 | 300 |
3 | 2 | 500 | 500 |
4 | 2 | 300 | 800 |
Таким образом, в основном на Счете есть много Транзакций, и транзакция сообщает, какая сумма была +, она показывает баланс после добавления этой транзакции к предыдущему балансу. Итак, последняя транзакция сообщает нам, каков текущий баланс на счете.
Теперь я хотел бы получить учетную запись, имеющую только его uid
, но с поворотом - я также хотел бы получить остаток, который будет столбцом balance
последней транзакции (на основе id
), которая принадлежит этому аккаунту. В идеале это даст мне объект модели Account
с дополнительным параметром баланса, доступным с помощью object[:balance]
.
Я знаю, что для этого потребуется левое внешнее соединение и выбор, который добавляет параметр баланса к объекту, что-то вроде select('accounts.*', 'transactions.balance as balance')
- плюс выбор последнего, так что упорядочение по идентификатору и ограничение до 1 - но у меня есть не знаю, как создать этот запрос (используя методы activerecord или чистый SQL), учитывая тот факт, что у меня есть доступ только к uid
учетной записи, а не к ее id
, которая упоминается как account_id
.