Как передать переменную в Rails find_by_sql и group_by - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть 2 таблицы.кредиты и платежи.Таблица платежей имеет due_loan_id.Теперь я хочу найти все платежи, относящиеся к ссуде, и выполнить вычисления в приведенном ниже SQL.Этот SQL-запрос отлично работает в MySQL Workbench.Однако я не могу заставить работать в Rails.Я не знаю, как передать переменные и сгруппировать в find_by_sql.

select d.id dueid, d.issue_loan_id, d.duedate,d.dueamount, sum(ifnull(amount, 0))paid, dueamount - sum(ifnull(amount, 0))balance from due_loans d
left join payments p
on d.id = p.due_loan_id
where d.issue_loan_id = 15
group by dueid

Если нет оплаты за соответствующий причитающийся кредит, тогда я назначаю 0 для расчетов.Среди других решений это то, что я пробовал.

  def get_due_loans_results
   @dueloans = DueLoan.find_by_sql(["select d.id dueid, d.issue_loan_id, d.duedate, d.dueamount, sum(ifnull(amount, 0))paid, dueamount - sum(ifnull(amount, 0))balance from due_loans d
                                left join payments p
                                on d.id = p.due_loan_id
                                where d.issue_loan_id =?", params[:issue_loan_id]].group_by => 'dueid')
   respond_to do |format|
   format.json  {render json: @dueloans}
  end
end

MySQL screenshot

1 Ответ

0 голосов
/ 03 февраля 2019

Вы пробовали как:

DueLoan.find_by_sql(["select d.id dueid, d.issue_loan_id, d.duedate, d.dueamount, sum(ifnull(amount, 0))paid, dueamount - sum(ifnull(amount, 0))balance from due_loans d
                                left join payments p
                                on d.id = p.due_loan_id
                                where d.issue_loan_id = ? group by dueid", params[:issue_loan_id]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...