Как установить загрузку файла программно с помощью программы "Скрепка"
У меня есть задача грабли, чтобы засеять приложение со случайными данными, используя драгоценный камень faker. Тем не менее, у нас также есть изображения (например, логотипы), которые мы хотим загрузить в этой задаче грабли.
У нас уже установлен Paperclip, но у вас нет возможности загружать их программно в задачу rake. Любые идеи?
Ответы
Ответ 1
Что вы подразумеваете под программным путем? Вы можете настроить метод, который будет проходить по пути в строке
my_model_instance = MyModel.new
file = File.open(file_path)
my_model_instance.attachment = file
file.close
my_model_instance.save!
#attachment
происходит из нашей декларации скрепки в нашей модели. В этом случае наша модель выглядит как
class MyModel < ActiveRecord::Base
has_attached_file :attachment
end
Мы выполнили аналогичные операции при загрузке проекта.
Ответ 2
Я делаю что-то подобное в граблированной задаче.
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
Надеюсь, это поможет!
Ответ 3
Мне не нужно было писать метод для этого. Гораздо проще.
В модели →
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).
Надеюсь, это ясно.