Сумма массивов, использующих .where - PullRequest
0 голосов
/ 12 января 2012

Возможно, это очень простое решение, но мы пытаемся выяснить, как найти сумму целочисленных столбцов суммы, принадлежащих:

@milestones = Milestone.where(:buyer_id => current_user.id).where(:status => 'Paid')

Я пытался <%= @milestones.amount.inject(:+) %> в представлении, не работает.

Ответы [ 3 ]

5 голосов
/ 12 января 2012

Дано:

@milestones = Milestone.where( :buyer_id => current_user.id ).
                        where( :status   => 'Paid' )

Тогда ...

<%= @milestones.sum :amount %>

Или просто:

@milestones_sum = Milestone.where( :buyer_id => current_user.id,
                                   :status   => 'Paid'
                                 ).
                            sum( :amount )

И ...

<%= @milestones_sum %>
3 голосов
/ 12 января 2012

Конечно, это не сработало.Там нет amount в массиве Milestone с.Попробуйте это:

@milestones.map(&:amount).inject(:+)
2 голосов
/ 12 января 2012

@milestones не имеет метода amount, потому что это не Milestone - это ActiveRecord::Relation или Array.

Вы можете попробовать @milestones.map(&:amount).inject(:+), чтобы собрать и суммировать все суммы сумм в приложении Rails.

Или вы можете использовать @milestones.sum(:amount), чтобы ActiveRecord выполнял для вас вычисления в базе данных, что может быть намного быстрее / эффективнее. Другие вычисления также доступны в ActiveRecord :: Calculations :: ClassMethods .

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