как выполнить расчет в рельсах one_to_many ассоциации? - PullRequest
0 голосов
/ 11 марта 2020

проект имеет ассоциацию one_to_many с финансовой Financial имеет ассоциацию one_to_many с payment_milestone

у каждого payment_milestone есть одно поле amount_invoice и amount_realized. Теперь я хочу рассчитать разницу в sum_invoice и amount_realized для всех payment_milestone и sum и показать их в project # index. я пытался, но я получаю сообщение об ошибке - вот мой код, что я пытался -

<% @projects.each do |project| %>
    <% @financials = Financial.where(project_id: project.id) %>
    <%  @Payment_milestones = PaymentMilestone.where(financial_id: @financials.ids) %>

    <%  outstanding_payment = 0 %>
    <%  @Payment_milestones.each{|s| outstanding_payment += s.amount_invoiced-s.amount_realized if s.amount_invoiced > s.amount_realized } %>
    <% @outstanding_payment = outstanding_payment %>
    <td><%= @outstanding_payment %></td>
<% end %>

1 Ответ

0 голосов
/ 11 марта 2020

Вы получаете ошибку, потому что s.amount_invoiced равен nil.

Есть ли вероятность, что вы можете установить значение по умолчанию для amount_invoiced и amount_realized равным 0? (по той причине, что < будет работать не с nil, а с целым или с плавающей точкой)

ИЛИ

Вы можете изменить свой код на: <% @Payment_milestones.each{|s| outstanding_payment += s.amount_invoiced.to_f - s.amount_realized.to_f if s.amount_invoiced.to_f > s.amount_realized.to_f } %>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...