ActiveAdmin - 有没有办法生成 CSV 组合两个模型 belongs_to 一个父模型?

ActiveAdmin - Is there a way to generate a CSV combining two models that belongs_to a parent one?

我有一个模型 User,还有两个模型,FooBar belongs_to :user。 用户模型有 has_many :foohas_many :bar.

这些关联在 rails 应用级别,而不是 active_admin 级别。

我想要的是从我已有的用户显示页面生成一个 CSV,它结合了用户各自的 foobar 属性。

Foo 和 Bar 共享一些属性,但不是全部,所以我知道某些字段将留空。

有没有办法在 Active Admin 中执行此操作?

我尝试使用 csv do 块,但无法将所有 FooBar 放入同一个 csv 中。

您可以编写自己的 csv 生成代码。下面是一些可以帮助您入门的脚手架代码:

sidebar :foos_bars_as_csv, :only => [:show] do
  a(href: foos_bars_as_csv_admin_user_path) do
    'Download as csv'
  end
end

member_action :foos_bars_as_csv, :method => :get do
  # define your own headers
  csv_headers = ["Header 1", "Header 2"] # customize yourself
  foos = resource.foos
  bars = resource.bars
  rawcsv = CSV.generate(:col_sep => ",") do |csv|
    # here you could add headers
    # csv << csv_headers
    
    foos.each do |foo|
      csv << foo.build_csv_row # or something like this
    end
    bars.each do |bar|
      bar << bar.build_csv_row
    end
    
    csv << csv_row
    end
  end
  send_data(rawcsv, :type => 'text/csv charset=utf-8; header=present', :filename => Time.now.strftime("%Y%m%e-%H%M%S) + "User#{resource.id}-FoosnBars" and return
end

祝你好运!