Ruby Rails Activerecord列遍历以检查空值

时间:2011-10-19 01:14:52

标签: ruby-on-rails ruby activerecord

假设我有一些ActiveRecord find_by_sql调用返回的数据。为一个查询返回的数据如下所示:

    id UserId City      State   Zip     Country   Email        Phone   Age
    1  fred   Atlanta   GA     300909    null     me@me.com    null     35
    2  Sue    New York  NY     99801     null     Sue@me.com   null     38
    3  Bill   Dallas    TX     87654     null     bill@me.com  null     25

然后,我有另一个包含这些值的数据集:

    id UserId City      State   Zip     Country   Email     Phone    Age
    4  fred   null       GA     300909    null     null     555-1212  null
    5  Sue    null       NY     99801     null     null     555-1213  null
    6  Bill   null       TX     87654     null     null     888-2121  null

因为我们有可选字段,所以我们不知道每个方案将填充哪些数据。我希望能够在页面上列出我有数据的所有字段,而不是为每个方案显示空列。为了这个例子,假设第一行中的任何值都将填充该数据集中的其余行。作为旁注,我还需要将这些值导出为csv,并且不希望其中存在空值。我搜索并搜索过,并没有想出来。我确信必须有一种方法可以在Ruby中实现这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你没有很多记录,你可以在ruby中轻松完成。如果你有足够的记录,那么它可能会变慢,你可能需要更多地使用数据库来检查空字段。以下是如何在ruby中执行此操作的基本要点。

@records = Record.find_by_sql('crazy_sql_here')
if @records.any? { |record| record.email.present? }
  # Display row and heading
end

根据您用于将数据导出为CSV的库,您应该能够设置要使用的列。如果没有任何记录,请跳过国家或电子邮件字段。