我有一个rake任务,使用faker宝石为随机数据播种应用程序。但是,我们还有一些要在此rake任务中上传的图像(如徽标)。
我们已经设置了Paperclip,但没有办法在rake任务中以编程方式将其上传。有任何想法吗?
Answers:
您以编程方式是什么意思?您可以设置一个方法,该方法将沿着
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
引导项目时,我们已经做了类似的事情。
attachment
是保留字还是用户定义的。
#close
则您更喜欢这两种方法(或块)中的哪一种?而且,讲道有点强大,不是吗?但是,您的观点很受好评。
我实际上不必为此编写方法。简单得多。
在模型中->
Class Model_Name < ActiveRecord::Base
has_attached_file :my_attachment,
:params_for_attachment
在seed.db中->
my_instance = Model_name.new
my_instance.my_attachment = File.open('path/to/file/relative/to/app')
my_instance.save!
也许先前的答案是使用模型中定义的附件名称(而不是编写方法Model_name.attachment)。希望这很清楚。
my_instance = Model_name.create!(my_attachment: File.open('path/to/file/relative/to/app'))
attachment
是您设定的has_attached_file :attachment,