这可能是一个愚蠢的问题,但我刚刚开始学习铁路,这就是我问这个问题的原因。
我有两种模式:
class Product < ActiveRecord::Base
attr_accessible :name
has_many :totalsolds
end
class Totalsold < ActiveRecord::Base
attr_accessible :date, :qty, :product_id, :product_attributes
belongs_to :product
accepts_nested_attributes_for :product
end
产品记录如下:
totalsold的记录看起来像:
在视图中,我试图在视图上显示如下:
问题:是否有某种教程或参考资料来解决我的问题?
注意:我不知道google搜索关键字,如果您知道请告诉我。 如果我的问题质量很差,我会关闭或标记这个问题
更新
我使用pivot_table找到了解决方案,但我不知道如何使用它。
答案 0 :(得分:1)
前两个表格是Product
和TotalSold
的简单表格。 TotalSold
中的条目表示特定日期 x 数量中特定产品的交易。
这个问题的主要内容是生成如图3所示的表。这涉及很少的连接和分组:
我不能给出查询正确的镜头,但这可能会有所帮助:
TotalSold.select('created_at, product_id, sum(quantity) as sum').group([:created_at, :product_id])
然后,您可以映射它以生成表格。
希望这会有所帮助:)
答案 1 :(得分:1)
我将以下内容放入seeds.rb文件中(快速而脏)。您可以使用rake db:seed
从命令行运行它a = Product.create! name: 'Product A'
b = Product.create! name: 'Product B'
c = Product.create! name: 'Product C'
Totalsold.create! date: "2014/02/05", product: a, qty: 31
Totalsold.create! date: "2014/02/05", product: b, qty: 12
Totalsold.create! date: "2014/02/05", product: c, qty: 7
Totalsold.create! date: "2014/03/05", product: a, qty: 23
Totalsold.create! date: "2014/03/05", product: b, qty: 16
Totalsold.create! date: "2014/03/05", product: c, qty: 2
pivot_table = Totalsold.includes(:product).group_by &:date
puts pivot_table
pivot_table.each do |date, products|
puts "Date: #{date}"
puts "Products: "
products.each { |prod| puts "#{prod.product.name} #{prod.qty}"}
end
这不需要使用任何非铁轨宝石。基本上,您选择所有totalsolds项目(确保还包括您使用belongs_to映射到模型上的产品信息)。然后,当结果返回时,您可以使用ruby的group_by http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-group_by按日期将记录分组到哈希。