2009-09-09 11 views

Respuesta

130

¿Qué quiere decir programáticamente? Puede configurar un método que tendrá una ruta de archivo en la línea de

my_model_instance = MyModel.new 
file = File.open(file_path) 
my_model_instance.attachment = file 
file.close 
my_model_instance.save! 

#attachment proviene de nuestra declaración Paperclip en nuestro modelo. En este caso, nuestro modelo se ve como

class MyModel < ActiveRecord::Base 
    has_attached_file :attachment 
end 

Hemos hecho cosas similares a esto cuando se inicia un proyecto.

+4

'attachment' es lo que haya establecido en' has_attached_file: attachment, ' –

+1

@BSeven ¿cree que sería más claro si añadí eso a la respuesta? Si es así, lo agregaré. – theIV

+0

Sí. No está claro si 'attachment' es una palabra reservada o un usuario definido. –

12

Hago algo como esto en una tarea de rake.

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 

Espero que esto ayude!

+0

Esto es útil, pero creo que no estamos haciendo exactamente esto, ¡gracias de todos modos! – Jaryl

+0

muchas gracias por esto, exactamente lo que necesitaba – Thomas

+0

de nada. – jonnii

8

No tuve que escribir un método para esto. Mucho más simple

En Modelo ->

Class Model_Name < ActiveRecord::Base 
    has_attached_file :my_attachment, 
    :params_for_attachment 

En seed.db ->

my_instance = Model_name.new 
my_instance.my_attachment = File.open('path/to/file/relative/to/app') 
my_instance.save! 

Tal vez las respuestas anteriores destinadas a utilizar el nombre del archivo adjunto como se define en el modelo (en lugar de escribir una método Model_name.attachment). Espero que esto esté claro.

+0

o en una línea 'my_instance = Model_name.create! (My_attachment: File.open ('path/to/file/relative/to/app'))' – scarver2

+0

fyi for alguna razón por la que no pude hacer funcionar la multilínea, pero la de Scarver2 funcionó como una delicia – Ben

Cuestiones relacionadas