如何利润?

时间:2014-01-30 03:55:26

标签: ruby-on-rails ruby

现在,用户可以通过表单向网站提交项目。它收集的信息是购买价格,销售价格和数量。从那里,我计算这样的利润:

<td><%= number_with_delimiter(((item.soldfor - item.boughtfor) * item.quantity)) %></td>

我接下来要做的是显示用户在特定时间段内发布的所有项目的利润,如下所示:

  

所有时间:1,000,000 |今天:102,111 |本周:200,111

问题在于利润只是一种计算,我无法在其他任何地方调用它。如何以一种允许我这样做的方式组织利润计算?

2 个答案:

答案 0 :(得分:2)

您应该在Item模型上编写一个方法来返回利润:

class Item < ActiveRecord::Base
  ...
  def profit
    (soldfor.to_f - boughtfor.to_f) * quantity.to_f  ## or use .to_i if you prefer integers
  end
  ...
end

然后在您看来,您可以致电:

<td><%= number_with_delimiter(item.profit) %></td>

或者,如果您想获得@items集合中所有内容的总利润:

@items.sum(&:profit)

所以在你的情况下,你可能会在控制器中做这样的事情:

@all_time_items  = Item.where(<conditions for all_time>)
@this_week_items = @all_time_items.where(<conditions for this_week>)
@today_items     = @this_week_items.where(<conditions for today>)

然后在你看来:

All time: <%= @all_time_items.sum(&:profit) %> | Today: <%= @today_items.sum(&:profit) %> | This week: <%= @this_week_items.sum(&:profit) %>

答案 1 :(得分:1)

你想动态调用方法吗? 然后怀疑辅助方法

def number_with_delimite(soldfor,boughtfor,quantity)
  (soldfor - boughtfor) * quantity)
end

在这里你可以调用具有日期和时间条件的方法

number_with_delimite(item.soldfor.item.boughtfor,item.quantity)