2011-01-13 4 views
32

Я попытался сохранить локальное изображение в консоли рельсов.Скрепка: как сохранить изображение в консоли Rails?

Поскольку у меня много фотографий в моем локальном хранилище (я использую искатель для загрузки тонны изображений), я хочу сохранить их в базе данных, с помощью скрепки, чтобы выполнить некоторую работу с изображениями, например миниатюру и т. Д. Если Я использую веб-страницу для сохранения новых изображений в базе данных один за другим, это будет стоить много времени. Поэтому я хочу найти способ в консоли rails (какой-то код), который может пакетно сохранить изображение в базу данных.

+0

Я рекомендую брать больше времени с вашим вопросом, в том числе то, что вы уже пробовали, и почему вы хотите использовать «консоль», чтобы сохранить локальный образ ... вы получите больше шансов на ответ занимая больше времени самостоятельно. –

ответ

3

Я не знаю, если это то, что вы хотите ... но для сохранения скрепки с консоли Вы можете просто использовать экземпляр File. a.e.

Image.new :data=>File.new("/path/to/image.jpg","r") 
+0

рубиновых-1.9.2-р0> Image.new NameError: неинициализированная константа Изображение \t из (IRB): 2 \t от /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties -3.0.1/lib/rails/commands/console.rb: 44: в 'start ' \t из /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/ lib/rails/commands/console.rb: 8: в 'start ' \t из /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands .rb: 23: в '<сверху (обязательно)> ' \t из сценария/рельсов: 6: в' требуется' \t из сценария/рельсов: 6: в '

' – mlzboy

+0

я попытался использовать Image.new в рельсах консоли но он вызывает ошибки как выше – mlzboy

+1

Это модель изображения? – andrea

16

Если это модель:

class User < ActiveRecord::Base 
    has_attached_file :avatar 
end 

то должно работать из консоли:

>> User.create(:avatar => File.open('/path/to/image.jpg', 'rb')) 
+0

Для любопытных '' rb'' и '' r'' в параметре 'File.open' являются взаимозаменяемыми, в соответствии с: http://stackoverflow.com/a/7085623/293280 –

50

Для дальнейшего уточнения ответ @ Андреа:

YourPaperclippedModelHere.new(:your_paperclip_field => File.new(path, "r"))

Так что, если ваша модель называется изображение и ваше поле скрепка это данные:

Image.new(:data => File.new(path_to_your_file, "r"))

0

поздний ответ, но, надеюсь, он будет работать для других. Необходимо включить.

File.new("#{Rails.root}/public/images/default_avatar.png", "r")