3

devise_invitableを使用してユーザーをアプリに招待しています。そのためにメールにカスタムメッセージを追加します。私のコードはこのように見えます。deliver_laterを使用しているときにメーラーでattr_accessorにアクセスできない

私は、私はメーラービュー上ゼロにdeliver_laterのattr_accessorを使用する場合、メッセージがメーラーに表示されるが、その後、届ける使用しています
#user.rb 
attr_accessor :message 

def self.invite(emails, message) 
    User.invite!({email: email}) do |user| 
    user.message = message 
    end 
end 

#here I am overriding devise_invitable method to send mails later 
def send_devise_notification(notification, *args) 
    devise_mailer.send(notification, self, *args).deliver_later 
end 

#users_controller.rb 
def invite_user 
    User.invite(params[:email], params[:message]) 
end  

#invitation_instructions.html.erb 
<% if @resource.message %> 
    <p><%= @resource.message %></p> 
<% end %>  

答えて

2

attr_accessordeliver_laterは、ユーザーオブジェクトをGlobalIDにシリアル化するため、機能しません。配信ジョブが実行されると、ジョブプロセスはデータベースからユーザーを再読み込みします(もちろん、オブジェクトにインスタンス変数は含まれません)。あなたはおそらくジョブにメッセージを渡す必要があります(*argsに手を入れてください(手を

+0

おかげで助かります)。 – power

関連する問題