Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中,如何在转换特定列的值时导出到CSV?_Ruby On Rails_Ruby_Csv_Export To Csv - Fatal编程技术网

Ruby on rails 在Rails中,如何在转换特定列的值时导出到CSV?

Ruby on rails 在Rails中,如何在转换特定列的值时导出到CSV?,ruby-on-rails,ruby,csv,export-to-csv,Ruby On Rails,Ruby,Csv,Export To Csv,目前,我正在使用Rails并能够导出,但是数据库中有数值格式的值,我需要将它们转换为字母数字格式。我有翻译,但我不知道如何在导出到CSV时进行翻译 下面是我当前要导出到CSV的代码片段 def self.to_csv(mycolumns) CSV.generate() do |csv| csv << mycolumns all.each do |ccts| csv << ccts.attributes.values_at(*mycolumn

目前,我正在使用Rails并能够导出,但是数据库中有数值格式的值,我需要将它们转换为字母数字格式。我有翻译,但我不知道如何在导出到CSV时进行翻译

下面是我当前要导出到CSV的代码片段

def self.to_csv(mycolumns)
  CSV.generate() do |csv|
    csv << mycolumns
    all.each do |ccts|
      csv << ccts.attributes.values_at(*mycolumns)
    end
  end
end
def self.to_csv(mycolumns)
CSV.generate()do | CSV|

csvcsv导出代码非常紧凑,尤其是这一行:

csv << ccts.attributes.values_at(*mycolumns)
现在,您需要数组中的
ccts
的所有值,以便将其发送到csv:

values = mycolums.map do |column_name|
  if column_name == :name
    lookup_fruit_name(ccts.name)
  else
    ccts[column_name]
  end
end
csv << values
然后你可以这样使用它:

csv << mycolumns.map{|col| ccts.csv_value_for(col) }

csv我们需要更多信息,比如(*mycolumns)
处的
values\u返回的值是什么?在调试时,编写一个小的测试脚本是有帮助的,该脚本不会命中数据库,而是使用一个小的内部数组来复制数据库内容。然后,您可以编写代码遍历该数组,更改值并输出CSV。然后,一旦您完成了该工作,您就可以将该代码折叠到遍历数据库的代码中。
def csv_value_for(column_name)
  if column_name == :name
    lookup_fruit_name( self.name )
  else
    self[column_name]
  end
end
csv << mycolumns.map{|col| ccts.csv_value_for(col) }