我有一个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
我希望只显示一次这样的重复项:
但是我不知道怎么做到这一点,我尝试了**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)
答案 0 :(得分:2)
尝试:
@cs = @a.cs.group(:name).sum(:amount)
这应该返回一个名称,金额对的散列,例如:
{ 'c1' => 14, 'c2' => 35, 'c3' => 5 }
请参阅http://guides.rubyonrails.org/active_record_querying.html#sum