2011-01-13 9 views
32

Ich habe versucht, ein lokales Bild in einer Rails-Konsole zu speichern.Paperclip: Wie speichert man ein Bild in einer Rails-Konsole?

Da ich viele Bilder in meinem lokalen Speicher habe (ich verwende Crawler, um Tonnen von Bildern herunterzuladen), möchte ich sie in einer Datenbank speichern, mit dem Vorteil von Büroklammer, einige Bild-Job, wie Thumbnail etc. tun. Wenn Ich benutze eine Webseite, um neue Bilder in der Datenbank einzeln zu speichern, es kostet viel Zeit. Also möchte ich einen Weg in der Rails-Konsole (etwas Code) finden, der Bild-in-Datenbank speichern kann.

+0

Ich empfehle mehr Zeit mit Ihrer Frage nehmen, einschließlich dessen, was Sie versucht haben und warum Sie verwenden „Konsole“ soll ein lokales Bild zu speichern ... Sie werden eine höhere Chance auf eine Antwort erhalten indem du dir mehr Zeit nimmst. –

Antwort

3

Ich weiß nicht, ob es das ist, was Sie wollen ... aber ein Büroklammer Asset von Konsole speichern Sie könnten einfach eine Datei-Instanz verwenden. a.e.

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

Rubin-1.9.2-p0> Image.new Nameerror: nicht initialisierte Konstante Bild \t aus (rb): 2 \t von /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties -3.0.1/lib/rails/commands/console.rb: 44: in 'start' \t von /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/ lib/rails/commands/console.rb: 8: in 'start' \t von /home/mlzboy/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands .rb: 23: in ' ' \t von Skript/Schienen: 6: in' require' \t von Skript/Schienen: 6: in '

' – mlzboy

+0

i Konsole Verwendung Image.new in Schienen versucht aber es wirft Fehler auf wie oben – mlzboy

+1

Es ist Modell Image definiert? – andrea

16

Wenn dies das Modell:

class User < ActiveRecord::Base 
    has_attached_file :avatar 
end 

dann sollte die folgende von der Konsole arbeiten:

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

Für diejenigen, die neugierig sind, sind "rb" und "r" im Parameter "File.open" austauschbar, wie folgt: http://stackoverflow.com/a/7085623/293280 –

50

Zur weiteren @ andrea Antwort zu klären:

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

Also, wenn Ihr Modell Bild und Ihre Büroklammer Feld genannt wird, ist Daten:

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

0

Späte Antwort, aber hoffentlich wird es für andere zu arbeiten. Sie müssen einschließen.

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

Verwandte Themen