2011-01-13 12 views
32

Intenté almacenar una imagen local en una consola de rieles.Paperclip: ¿Cómo almacenar una imagen en la consola de Rails?

Como tengo muchas imágenes en mi almacenamiento local (utilizo el rastreador para descargar toneladas de imágenes), quiero almacenarlas en una base de datos, con el beneficio del clip para hacer algunas imágenes, como miniaturas, etc. If Utilizo una página web para guardar nuevas imágenes en la base de datos una por una, esto costará mucho tiempo. Así que quiero encontrar un camino en la consola de rieles (algún código) que pueda guardar por lotes-imagen-en-base de datos.

+0

me recomiendan tomar más tiempo con su pregunta, incluyendo lo que ha intentado y por qué desea utilizar "consola" para almacenar una imagen local ... Usted obtendrá una mayor probabilidad de una respuesta tomándote más tiempo tú mismo. –

Respuesta

3

No sé si es lo que quiere ... pero para guardar un activo de clip desde la consola Puede usar simplemente una instancia de archivo. a.e.

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

rubí-1.9.2-p0> Image.new NameError: sin inicializar constantes imagen \t a partir de (IRB): 2 \t de /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties -3.0.1/lib/rails/commands/console.rb: 44: in 'start ' \t de /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/ lib/rails/commands/console.rb: 8: in 'start ' \t de /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands .rb: 23: en ' ' \t de script/rieles: 6: en' requerir' \t de script/rieles: 6: en '

' – mlzboy

+0

Traté uso Image.new en la consola de rieles pero levanta errores como arriba – mlzboy

+1

Es modelo Imagen definida? – andrea

16

Si este es el modelo:

class User < ActiveRecord::Base 
    has_attached_file :avatar 
end 

a continuación, el siguiente debe trabajar desde la consola:

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

Para aquellos que son curiosos, ''rb'' y' 'r'' en el parámetro 'File.open' son intercambiables, según: http://stackoverflow.com/a/7085623/293280 –

50

Para aclarar aún más la respuesta de @ andrea:

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

Así que si su modelo se llama imagen y su campo es un clip de datos:

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

0

tardía respuesta, pero es de esperar que va a trabajar para otros. Necesita incluir.

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

Cuestiones relacionadas