新手问题 循环遍历

gechentuo · 2013年12月22日 · 最后由 lgn21st 回复于 2013年12月30日 · 2766 次阅读

我有一个购物车类 ShoppingCart

class Shoppingcart < ActiveRecord::Base
has_many :items
end

我现在想写一个方法统计一个购物车中所有商品(Item.price)的总价,需要循环遍历,但是我语法不太熟悉,请大家帮帮我

shopping_cart.items.sum(&:price)

你查过文档吗?还是不知道怎么查文档? http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-sum 可以看到, sum 就是干这个的。

#1 楼 @HungYuHei 真是手快有,手慢无啊!

#4 楼 @lgn21st 恩,对 ruby 的用法不太熟悉。谢了啊

#4 楼 @lgn21st 上次你你告诉我说可以用 sum 这个函数来获得属性的总和。我的项目里面有了些变化, 我有 3 个 modle

class Item < ActiveRecord::Base
    has_attached_file :avatar, :styles => { :medium => "300*300>", :thumb => "100*100>"  }  
    belongs_to :store
    has_many :itemincarts
    has_many :shoppingcarts, through: :itemincarts
end
class Shoppingcart < ActiveRecord::Base
    belongs_to :user
    has_many :itemincarts
    has_many :items, through: :itemincarts
end
class Itemincart < ActiveRecord::Base
    belongs_to :shoppingcart
    belongs_to :item
end

我想计算到 current_user.shoppingcart 里面的所有商品的总价,有没有方便的方法?

#7 楼 @gechentuo Rails 文档中的 sum 方法其实是数据库的一个 Aggregation 函数,标准的 SQL 都支持的函数:http://www.tutorialspoint.com/sql/sql-sum-function.htm

从你的三个 model 定义来看,用 sum 依然是一个很方便的计算总价的方式。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号