Rails: загрузка с помощью механизации пользовательского имени файла

#ruby-on-rails #ruby #devise #mechanize

#ruby-on-rails #ruby #разработка #механизировать

Вопрос:

Теперь я пытаюсь загрузить случайный аватар для пользователей при регистрации. Итак, я получаю Mechanize и делаю это после исследования.

 class RegistrationsController < Devise::RegistrationsController
def new
    super
end
def create
    agent = Mechanize.new
    agent.pluggable_parser.default = Mechanize::Download
    f = agent.get('http://avatar.3sd.me/100')
    f.save('public/images/avatar/it_should_be_user_id.png')
    super
end
def update
    super
end
end
 

Но я не могу понять, как сохранить файл с определенным именем в соответствии с идентификатором пользователя, как это сделать?

Ответ №1:

Я предлагаю вам сначала вызвать super в create методе, чтобы настройка контроллера devise по умолчанию выполнялась до выполнения вашего кода.

Внутри RegistrationsController класса вы можете получить доступ к текущему пользователю с помощью переменной / метода resource (вместо чего-то подобного current_user ). Итак, ваш код будет выглядеть следующим образом:

 class RegistrationsController < Devise::RegistrationsController
    def new
        super
    end
    def create
        super
        agent = Mechanize.new
        agent.pluggable_parser.default = Mechanize::Download
        f = agent.get('http://avatar.3sd.me/100')
        f.save("public/images/avatar/#{resource.id}.png")
    end
    def update
        super
    end
end
 

Комментарии:

1. Я рад, что это так. Не могли бы вы принять этот ответ как лучший?