我有一个购物车类 ShoppingCart
class Shoppingcart < ActiveRecord::Base has_many :items end
我现在想写一个方法统计一个购物车中所有商品(Item.price)的总价,需要循环遍历,但是我语法不太熟悉,请大家帮帮我
shopping_cart.items.sum(&:price)
#1 楼 @HungYuHei 谢谢了哈
你查过文档吗?还是不知道怎么查文档? http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-sum 可以看到, sum 就是干这个的。
sum
#1 楼 @HungYuHei 真是手快有,手慢无啊!
#4 楼 @lgn21st
#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 依然是一个很方便的计算总价的方式。