У меня есть expenses
, у которых есть столбцы: :quantity
и unitcost
. Общая сумма расходов составляет :quantity * unit cost
.Rails сумма двух значений, умноженных вместе
woassets
have_many :expenses
.
Я хочу показать общее количество для каждого asset
в списке индексов asset
.
Это работает:
<% expensetotal = 0 %>
<% woasset.expenses.each do |expense| %>
<% expensetotal = expensetotal + (expense.quantity.to_i * expense.unitcost) %>
<% end %>
<td><%= expensetotal %></td>
Но есть лучший способ?
Я попытался определения expense total
в expense
модели, как это:
def expense_amount
"#{self.quantity} #{self.unit_price}"
end
Тогда это в индексе:
<%= woasset.expenses.sum(:expense_amount)
Но это не сработало.
Спасибо за помощь
Что бы это значило подвести строку, содержащую два числа ? В любом случае, почему бы не заполнить общую сумму расходов по созданию/обновлению/сохранению/независимо? –
Возможно, вы также можете сделать это непосредственно в базе данных с помощью агрегатных функций. Вы должны это изучить, потому что в общем случае быстрее позволить БД работать, а затем возвращать ответ, а также получать данные, а затем выполнять работу на сервере. – MrDanA
Это хорошие альтернативы - спасибо – Reddirt