Resque Worker的参数数量错误(给定1,预期为2)

时间:2018-04-10 13:29:49

标签: ruby-on-rails ruby resque

我理解self.perform方法需要两个参数,我将它们传入。我可以向你保证实例变量有值,因为我已经检查过了。你能看到我做错了什么?

控制器:

Resque.enqueue_to(:high, SendInvitationEmail, user_token: @user.token, invitee_token: @invitee.token)

工人:

class SendInvitationEmail
  def self.perform(user_token, invitee_token)
      Frontend::UserManagementMailer.invitation_email(user_token, invitee_token)
  end
end

错误:

wrong number of arguments (given 1, expected 2) line 3

1 个答案:

答案 0 :(得分:0)

问题是您将enqueue_to的参数作为关键字参数或Hash传递。

相反,删除键并传递参数。

Resque.enqueue_to(:high, SendInvitationEmail, @user.token, @invitee.token)

或者您可以修改perform的方法签名以接受哈希或关键字参数

class SendInvitationEmail
  def self.perform(user_token:, invitee_token:)
      Frontend::UserManagementMailer.invitation_email(user_token, invitee_token)
  end
end