2017-02-08 3 views
0

У меня есть две модели с прикрепленными файлами с использованием Paperclip. Эти две модели почти идентичны, однако, когда я вызываю метод «.attachment_name» для каждого класса, для второй модели он возвращает nil.Paperclip attachment_name возвращает nil

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

Вот первая модель:

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 

Вот второй один:

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 

Так что, когда в рельсах консоли я пытаюсь получить имя вложения для обеих моделей со второй моделью Я получаю ноль:

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

Я не могу понять, почему это происходит и что я делаю неправильно. Я попытался добавить те же валидации и варианты к has_attached_file, но это не помогло.

Так что у меня кончились идеи, и эта проблема сводит меня с ума. Буду благодарен за любую помощь!

ответ

0

Можем ли мы видеть ваш контроллер? У меня была такая же проблема, и я решил ее, написав в методе create:

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

Причиной этого является то, что Rails фактически обрабатывает файл/образ, но все внутри модели. Что-то вроде этого:

Параметры:

{"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"} 
Смежные вопросы