2017-02-08 3 views
0

zurück Ich habe zwei Modelle mit angehängten Dateien mit der Verwendung von Paperclip. Diese beiden Modelle sind fast identisch, aber wenn ich eine Methode '.attachment_name' für jede Klasse aufrufe, gibt sie für das zweite Modell nil zurück.Paperclip Attachment_Name gibt

Ich poste hier Code für beide Modelle ungepurgiert, weil ich nicht weiß, welche Informationen wichtig sind. Hier

ist das erste Modell:

class DocumentationFile < ActiveRecord::Base 
    belongs_to :documentation 

    has_attached_file :file, styles: { large: '720x720>', medium: '300x300>', thumb: '100x100>' }, 
          default_url: '/images/:style/missing.png' 

    validates_attachment :file, content_type: { content_type: [/\Aimage\/.*\Z/, 'application/pdf'] }, 
         size: { in: 0.megabytes..5.megabytes } 


    validates :file, presence: true 
end 

Hier ist ein zweiter:

class JobExtra < ActiveRecord::Base 
    belongs_to :job 

    has_attached_file :file 
    validates_attachment :file, content_type: { content_type: [/\Aimage\/.*\Z/, 'application/pdf'] }, 
         size: { in: 0.megabytes..5.megabytes } 
end 

Also, wenn in Schienen Konsole Ich versuche, Attachment-Namen für beiden Modelle mit dem zweiten Modell zu erhalten ich erhalte nil:

2.3.3 :003 > DocumentationFile.attachment_name 
=> :file 
2.3.3 :004 > JobExtra.attachment_name 
=> nil 

ich kann nicht verstehen, warum es passiert und was ich falsch mache. Ich habe versucht, die gleichen Validierungen und Optionen zu has_attached_file hinzuzufügen, aber es hat nicht geholfen.

Also ich habe keine Ideen mehr und dieses Thema treibt mich verrückt. Ich werde für jede Hilfe dankbar sein!

Antwort

0

Können wir Ihren Controller sehen? Ich hatte das gleiche Problem, und ich löste es, indem in der create Methode schreiben:

def create 
    @job.file = params[:job][:file] 
    @job.save 
end 

Der Grund dafür ist, dass Rails-Prozesse tatsächlich die Datei/Bild, aber alles ist im Innern des Modells. Etwas wie folgt aus:

Parameter:

{"job"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0x007f 
f342035948 @tempfile=#<Tempfile:/var/folders/_2/....jpg>, @original_filename="....jpg", filename=\"....jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"send"}