通过to_csv方法将数据导出到Excel的两种变体,具体取决于控制器?

时间:2017-11-09 13:40:40

标签: ruby-on-rails ruby

我有一个thing.rb模型和两个控制器,例如:thingController.rb和subthingController.rb。

这两个控制器都需要提供导出数据到CSV文件(在视图中有用于生成CSV的按钮)。它的工作原理如下:https://www.codementor.io/victor_hazbun/export-records-to-csv-files-ruby-on-rails-vda8323q0 - 我正以类似的方式做到这一点。

我需要从我的控制器访问to_csv,但如果我使用第一个控制器,to_csv方法导出一组属性,如果我使用第二个控制器,to_csv方法会导出一组不同的属性。

如果我不需要两种不同的to_csv方法,一切都会好的。假设第一种方法将名称和电子邮件导出到Excel。第二个出口电话号码和昵称。

我不能做类似:thing_to_csv和subthings_to_csv在我的thing.rb模型中 - 这些是自定义方法(to_csv是内置的),Rails不再识别它们。

我可以在我的模型和to_csv方法中创建if或switch语句,具体取决于哪种控制器需要此方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用子模型来更具体.to_csv,例如

class Thing < ActiveRecord::Base
  def self.to_csv
    # exports a, b, and c
  end
end

class SubThing < Thing
  def self.to_csv
    # exports d, e, and f
  end
end

现在,您可以在SubthingController.to_csv中进行SubThing导出所需的字段。

答案 1 :(得分:1)

使用参数def self.to_csv(attributes = nil)定义方法to_csv,以便自定义结果?