我正在我的rails应用程序中构建一个报告,现在我遇到了group_by的复杂性。此报告基本上包括按姓名,birth_date,年龄,client_type(enumerize 1 - Normal,2 - VIP,3 - 有限制),性别(enumerize 1 - Male,2 - Female),create_at分组显示的客户信息。今天我的代码是这样的。
@customers = Customers.where(filters).group_by{ |customer|
case params[:grouped_by].to_i
when 0
customer.name
when 1
customer.birth_date.try(:to_date)
when 2
customer.age
when 3
customer.client_type.try(:text)
when 4
customer.gender.try(:text)
else
customer.created_at.try(:to_date)
end
}
嗯,这段代码并不漂亮,我也不知道该怎么做。我尝试使用rails发送但没有成功,只是因为尝试。我不想使用ActiveRecord.group。
我知道这个问题太过于学者,但我不会接受任何建议,欢迎任何建议。
答案 0 :(得分:0)
我没试过也不确定,请创建一个像
这样的哈希1.9.3p448 :062 > hash={0=>{:name => :to_s},1 => {:birth_date => :to_date}}
然后
1.9.3p448 :067 > case q
1.9.3p448 :068?> when 0,1
1.9.3p448 :069?> aa=Site.try(hash[q].keys.first).try(hash[q].values.first)
1.9.3p448 :070?> puts aa
1.9.3p448 :071?> end
请尝试那样。如果它工作正常。