如何使用Paperclip以编程方式设置文件上载

时间:2009-09-09 03:59:58

标签: ruby-on-rails ruby paperclip file-upload

我有一个rake任务,使用faker gem为随机数据播种应用程序。但是,我们还需要在此rake任务中上传图像(如徽标)。

我们已经设置了Paperclip,但没有办法在rake任务中以编程方式上传它们。有什么想法吗?

3 个答案:

答案 0 :(得分:138)

你的编程是什么意思?您可以设置一个方法,该方法将采用

行的文件路径
my_model_instance = MyModel.new
file = File.open(file_path)
my_model_instance.attachment = file
file.close
my_model_instance.save!

#attachment来自我们模型中的Paperclip声明。在这种情况下,我们的模型看起来像

class MyModel < ActiveRecord::Base
  has_attached_file :attachment
end

我们在引导项目时做了类似的事情。

答案 1 :(得分:12)

我在rake任务中做了类似的事情。

photo_path = './test/fixtures/files/*.jpg'
Dir.glob(photo_path).entries.each do |e|
  model = Model.find(<query here>)        
  model.attachment = File.open(e)
  model.save
end

我希望这有帮助!

答案 2 :(得分:8)

我实际上不必为此编写方法。更简单。

在模型中 - &gt;

Class Model_Name < ActiveRecord::Base
  has_attached_file :my_attachment,
  :params_for_attachment

在seed.db - &gt;

my_instance = Model_name.new
my_instance.my_attachment = File.open('path/to/file/relative/to/app')
my_instance.save!

也许以前的答案意味着使用模型中定义的附件名称(而不是编写方法Model_name.attachment)。 希望这很清楚。