Ruby on rails 如何在Rails CSV生成器中将特定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 我不知道如何将这些标题(数据和时间、操作等
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文件就足够了,以防像我以前写的那样。