неопределенная локальная переменная или параметры метода

#ruby-on-rails #devise #controller

#ruby-on-rails #разработать #контроллер

Вопрос:

Я использую gem gibbon для подключения пользователя моего веб-сайта devise к mailchimp, так что вот мой контроллер, и я не уверен, как я могу найти электронные письма пользователя

Пожалуйста, кто-нибудь, помогите мне

 class SubscribeUserToMailingListJob < ActiveJob::Base
  queue_as :default
   require 'gibbon'


  def perform(*args)
    user = User.find(params[:id])

    gibbon = Gibbon::Request.new(api_key: "40691025ef57db1d1be9530e5d6ed79d-us7")
    gibbon.timeout = 10
    gibbon.lists("f9acb10acd").members.create(
            body: 
            {
                email_address: user.email, 
                status: "subscribed"})

  end
end
  

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

1. К вашему сведению, это не контроллер.

2. О, да, так как я могу найти адрес электронной почты пользователя, который находится в пользовательской модели def subscribe_user_to_mailing_list SubscribeUserToMailingListJob.perform_later(self) end

3. Что вы имеете в виду, как я могу найти? Вы передаете пользовательский объект в аргументах. У пользователя есть электронная почта.

4. адрес электронной почты: User.email это дает мне неопределенный метод `email’ для #<Класс: 0x007ff618f68dd8>

5. подсказка: проверьте, что у вас есть в args

Ответ №1:

Вы уже передаете пользователя в аргументы. Просто назовите его соответствующим образом.

 def perform(user)
  # now you can do
  user.email