ActiveRecord, где условие для выбранного результата запроса

0
Borrower.joins("INNER JOIN receivables ON receivables.borrower_id = borrowers.id")
.where("borrowers.type='moulde_b'")
.select(" borrowers.id as id,sum(receivables.amount) as invoice_amount");

из приведенного выше набора результатов я пытаюсь сделать, где условие после оператора select.

Я пытаюсь что-то вроде ниже,

Borrower.joins("INNER JOIN receivables ON receivables.borrower_id = borrowers.id")
    .where("borrowers.type='moulde_b'")
    .select(" borrowers.id as id,sum(receivables.amount) as invoice_amount").where("receivables.amount = 12323.23");

это действительно можно сделать после выбора, где condtion в столбце SUM.

Теги:
activerecord
ruby-on-rails-4

1 ответ

1

Используйте ActiveRecord::QueryMethods#having вместо того, where:

Borrower.
  joins("INNER JOIN receivables ON receivables.borrower_id = borrowers.id").
  where("borrowers.type = 'moulde_b'").
  select("borrowers.id as id, sum(receivables.amount) as invoice_amount").
  group("borrowers.id"). # mandatory for having
  having("invoice_amount = 12323.33")

Порядок цепочки этих методов не имеет большого значения, так как AR равно изменит его при построении реального SQL-запроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню