我理解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
答案 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