0

我有一个 rails 3.1.12 应用程序,其中假设我有一个表A,并且我有一些数据,并且它与表B相关联并具有 has_many 关系,我的意思是说

class A < ActiveRecord::Base
 has_many :B, :conditions => {:type => "B"}, :dependent => :destroy
 has_many :c, :class_name => "B", :conditions => {:type => nil}, :dependent => :destroy
end

在 B 的模型中,我有:

class B < ActiveRecord::Base
  belongs_to :A
end

我的表C中有一些数据是从B继承的

 - **name** **amount**
 -    c1      10
 -    c2      20
 -    c3       5
 -    c1      4
 -    c2      15

我只想一次显示这个重复的项目,例如:

  • 姓名*金额*
    • c1 14
    • c2 35
    • c3 5

但我不知道如何得到这个,我已经尝试过**group_by**方法uniq,但它们在我的情况下不起作用。在我的控制器A视图操作中,我已经声明了所有这些:

class AsController < ApplicationController
def show
    @a = A.find(params[:id])
    @bs = @a.bs
    @cs = @a.cs
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @a }
    end
  end

end

在我的视图文件中,我将所有这些都称为:

<%= render :partial => "b_item_details", :collection => @bs %>

 <%= render :partial => "c_line_item_details", :collection => @cs %>

我相信有些人可能会遇到这样的问题,任何帮助将不胜感激

实际上,我想显示唯一记录,我的意思是如果 c1 有 4 个条目而 c2 有 3 个条目,而不是在显示时我只想显示 c1 和 c2 一次,它们的总数应该是所有条目的总数(c1+c1+c3+c4)

4

1 回答 1

2

尝试:

@cs = @a.cs.group(:name).sum(:amount)

这应该会返回一个名称、金额对的哈希值,例如:

{ 'c1' => 14, 'c2' => 35, 'c3' => 5 }

http://guides.rubyonrails.org/active_record_querying.html#sum

于 2013-08-19T08:01:01.427 回答