2013-08-01 34 views
0

基本上我有一个名为ServerStatus的模型,我需要创建一个对象以传入Google图表。Rails - 为Google图表创建同一个表格中的对象

ServerStatus Schema: 
# config_id :integer 
# count  :integer 
# success  :boolean 
# failure  :boolean 
# generated_at :datetime 

目的需要在格式:

data_table.add_row([ datetime, success, failure]) 

日期时间字段被称为generated_at,并且successfailure都是布尔型,各与相关联的计数(单独字段)。

我目前做如下:

ServerStatus.find(:all, :conditions => {:config_id => options[:config_id], :success => true, :generated_at => options[:start_date].beginning_of_day..options[:end_date].end_of_day}, :order => 'generated_at ASC').each do |s| 
ServerStatus.find(:all, :conditions => {:config_id => options[:config_id], :failure => true, :generated_at => options[:start_date].beginning_of_day..options[:end_date].end_of_day}, :order => 'generated_at ASC').each do |f| 
     data_table.add_row([ s.generated_at.in_time_zone('Pacific Time (US & Canada)'), s.count, f.count]) 
     end 
    end 

这样做,这样增加了该generated_at时间的两倍,因此对于:failure => true地块不正确的图形。如何在success = truefailure = true之间选择所有位置,并将每个位置的计数映射到generated_at时间,并将映射到时间时的空值考虑在内。

回答

0

你可以运行两个单独的查询:
1)找出所有在那里,成功=真
2)找出所有在那里失败=真正

然后加入由上述步骤返回两个数组。

最后,遍历这个新形成的数组并填充你的data_table。

我没有明白需要两个变量:成功&失败。对于同一条记录,您是否可以同时成功执行&的错误?我从你的ServerStatus的简短定义中得到了什么,我不认为这是必要的。只用一个变量就可以做得很好。

server_status = ServerStatus.find(<your condition>) 
server_status.each do |status| 
data_table.add_row([status.generated_at, server_status.success, !server_status.success]) 
end 
相关问题