Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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生成器中将特定CSV头分配给特定数据_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在Rails CSV生成器中将特定CSV头分配给特定数据

Ruby on rails 如何在Rails CSV生成器中将特定CSV头分配给特定数据,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试为管理员日志实现CSV文件生成器。问题是我想要一个包含如下数据的表: Date & time | Action | Acting User | Old Data | New Data ------------|------------|-------------|----------|---------- created_at | action_type| admin_email | old_data | new_data 我不知道如何将这些标题(数据和时间、操作等

我正在尝试为管理员日志实现CSV文件生成器。问题是我想要一个包含如下数据的表:

Date & time | Action     | Acting User | Old Data | New Data
------------|------------|-------------|----------|----------
created_at  | action_type| admin_email | old_data | new_data
我不知道如何将这些标题(数据和时间、操作等)分配到特定行(创建时间、操作类型等)

这就是我现在拥有的

class CsvAdminLogGenerator
  LOG_HEADERS = ['Date&Time', 'Action', 'Acting User', 'Old Data', 'New Data'].freeze

  def initialize(start_date:, end_date:)
    @start_date = start_date
    @end_date = end_date
  end

  def build_csv_file
    AdminPanelLog.dates_between(start_date, end_date).each do |admin_log|
      CSV.generate(headers: LOG_HEADERS, col_sep: ';', encoding: 'UTF-8') do |csv|
        csv << admin_log.created_at
        csv << admin_log.action_type
        csv << admin_log.admin_email
        csv << admin_log.old_data
        csv << admin_log.new_data
      end
    end
  end
end
CsvAdminLogGenerator类
日志标题=[“日期和时间”,“操作”,“代理用户”,“旧数据”,“新数据]。冻结
def初始化(开始日期:,结束日期:)
@开始日期=开始日期
@结束日期=结束日期
结束
def build_csv_文件
AdminPanelLog.dates_介于(开始日期、结束日期)之间。每个do|admin_日志|
generate(头:LOG_头,col_sep:“;”,编码:'UTF-8')do|CSV|

csv您正在为每个AdminPanelLog记录生成一个csv文件。这是有意的吗?@JoshBrody我希望有一个能够反映这种情况的解决方案-用户希望所有的管理日志从2019年1月1日到2019年7月7日,并且这些数据应该在一个CSV文件中。AdminPanelLog是一种存储特定数据的模型,如
操作类型
管理员电子邮件
等。您正在迭代每个AdminPanelLog并生成一个新的CSV文件。你需要颠倒顺序。我不明白,怎么做?我认为创建csv文件就足够了,以防像我以前写的那样。