我正在开发一个市场应用程序,卖家可以列出要销售的商品。
我有一个下载CSV方法,可以让卖家下载他们的商品。
我的方法下载所有列。我有两个问题:
1)如何指定列,让我们说我只想要名称,图片,价格。
2)在模型中,图像字段只存储图像名称,例如item.jpg。但我想导出存储图像的URL。我使用Paperclip加载图像和Dropbox来保存它们。所以每张图片都有一个dropbox url,我想导出它。
我在模型中的方法:
def self.to_csv(listings)
CSV.generate do |csv|
csv << column_names
listings.each do |listing|
csv << listing.attributes.values_at(*column_names)
end
end
end
答案 0 :(得分:1)
1)如何指定列,让我们说我只想要名称,图片,价格。
您需要更改.values_at(*column_names)
部分以仅选择所需的列:
def self.to_csv(listings)
wanted_columns = [:name, :image, :price]
CSV.generate do |csv|
csv << wanted_columns
listings.each do |listing|
csv << listing.attributes.with_indifferent_access.values_at(*wanted_columns)
end
end
end
2)在CSV文件中导出图片的网址
你可能有像image.url
这样的方法,它返回图像的URL:
def self.to_csv(listings)
wanted_columns = [:name, :price]
CSV.generate do |csv|
csv << wanted_columns + [:image]
listings.each do |listing|
attrs = listing.attributes.with_indifferent_access.values_at(*wanted_columns)
attrs.push(listing.image.url) # if image is not always present, use `listing.image.try(:url)`
csv << attrs
end
end
end