我有一个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语句,具体取决于哪种控制器需要此方法吗?
答案 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,以便自定义结果?