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