我有厕所和照片模型,照片有多态关联。 我有一个rake任务,从csv文件收集信息。我想更新图片,但由于它不是厕所桌子的一部分,我很难搞清楚。我用回形针来处理我的图像。
我的任务看起来像这样
namespace :import do
desc "Importing toilets from csv"
task toilets: :environment do
filename = File.join Rails.root, "toilets.csv"
counter = 0
CSV.foreach(filename, headers: true) do |row|
toilet = Toilet.create(
name: row['name'],
latitude: row['latitude'],
longitude: row['longitude'],
address: row['address'],
image: row['image']
)
puts "#{toilet} - #{toilet.errors.full_messages.join(",")}" if toilet.errors.any?
counter += 1 if toilet.persisted?
end
puts "Imported #{counter} toilets"
end
end
厕所模型
has_many :photos, :as => :imageable
accepts_nested_attributes_for :photos
照片模特
belongs_to :toilet
belongs_to :imageable, :polymorphic => true
has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100>" }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
答案 0 :(得分:0)
我想出了如何使用下面的代码更新图像。这有效,但我觉得可能有一个更清洁的解决方案。
toilet = Toilet.create(
name: row['name'],
latitude: row['latitude'],
longitude: row['longitude'],
address: row['address']
)
photo = Photo.create(
image: row["image"],
imageable_type: "Toilet",
imageable_id: toilet.id
)