Как установить загрузку файла программно с помощью скрепки
У меня есть задача рейка, чтобы засеять приложение случайными данными с помощью Faker gem. Однако у нас также есть изображения (например, логотипы), которые мы хотим загрузить в этой задаче rake.
У нас уже есть Paperclip set up, но нет способа загрузить их программно в задаче rake. Есть идеи?
3 ответа:
что вы подразумеваете под программно? Вы можете настроить метод, который будет принимать путь к файлу по строкам
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
мы делали нечто подобное при начальной загрузке проекта.
Я делаю что-то вроде этого в задаче грабли.
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
надеюсь, это поможет!
на самом деле мне не нужно было писать метод для этого. Гораздо проще.
Модель ->
Class Model_Name < ActiveRecord::Base has_attached_file :my_attachment, :params_for_attachment
в семени.db ->
my_instance = Model_name.new my_instance.my_attachment = File.open('path/to/file/relative/to/app') my_instance.save!
возможно, предыдущие ответы предназначались для использования имени вложения, определенного в модели (вместо написания метода Model_name.привязанность.) Надеюсь, это понятно.