Rails 导出为 CSV
Rails export to CSV
我正在尝试将我的数据导出到 CSV 文件并允许下载。我想从相关模型中获取该数据的名称,而不是外键。但是我仍然在获取外键。
//Controller
@missions = Mission.where({:status => 1}).order(:name)
respond_to do |format|
format.csv { render text: @missions.to_csv }
end
// Model
def self.to_csv
CSV.generate do |csv|
csv << column_names
all.each do |mission|
csv << mission.attributes.values_at(*column_names)
end
end
end
有没有办法将 region_id
外键引用到它的 regions.name
如果您 has_many 关系设置正确,您将能够使用以下方法访问任务的第一个区域的名称:
mission.regions.first.name
或者在你的循环之外,你可以return第一个任务的区域名称使用:
Mission.first.regions.first.name
如果每个任务应该只有一个区域,您可能需要将 has_many 更改为 has_one。在这种情况下,您可以删除复数区域并将其替换为如下区域:
Mission.first.region.name
设置完成后,以下教程应该可以帮助您完成剩下的工作:
https://www.lockyy.com/posts/rails-4/exporting-csv-files-in-rails
我正在尝试将我的数据导出到 CSV 文件并允许下载。我想从相关模型中获取该数据的名称,而不是外键。但是我仍然在获取外键。
//Controller
@missions = Mission.where({:status => 1}).order(:name)
respond_to do |format|
format.csv { render text: @missions.to_csv }
end
// Model
def self.to_csv
CSV.generate do |csv|
csv << column_names
all.each do |mission|
csv << mission.attributes.values_at(*column_names)
end
end
end
有没有办法将 region_id
外键引用到它的 regions.name
如果您 has_many 关系设置正确,您将能够使用以下方法访问任务的第一个区域的名称:
mission.regions.first.name
或者在你的循环之外,你可以return第一个任务的区域名称使用:
Mission.first.regions.first.name
如果每个任务应该只有一个区域,您可能需要将 has_many 更改为 has_one。在这种情况下,您可以删除复数区域并将其替换为如下区域:
Mission.first.region.name
设置完成后,以下教程应该可以帮助您完成剩下的工作:
https://www.lockyy.com/posts/rails-4/exporting-csv-files-in-rails