2017-06-12 6 views
0

Dans mon application rails4, je dois envoyer des e-mails à tous les utilisateurs une fois par semaine. Les utilisateurs appartiennent à différents départements. J'ai besoin d'organiser l'envoi de courrier en fonction des noms de files d'attente du département. Mais, je ne sais pas comment donner le nom de la file d'attente en tant que paramètre lors de l'envoi du courrier. Tous les mails utilisant le même nom de file d'attente 'weekly_user_activity_queue'. Ne pas paramétrer dans la file d'attente des noms de département comme défini ci-dessous. Comment puis-je y parvenir? Le code est indiqué ci-dessous:Définition de différents noms de files d'attente dans Resque mailer

Le Gemfile:

gem 'resque',:require => "resque/server" # for background processing 
    gem 'resque_mailer' #for background mail sending 

app/mailers/user_activit_mailer.rb

class UserActivityMailer < ActionMailer::Base 
    include Resque::Mailer 

    @queue = :weekly_user_activity_queue 

    def weekly_user_activities 
    User.find_each do |user| 
     @activities = user.get_user_activities 
     email = @user.email 

     @queue = user.get_department_name # Assigning department name as the queue name. Users with same department gets the email through the same queue. 

     mail(to:email, subject: default_i18n_subject) 
    end 
    end 
end 

S'il vous plaît aider. Merci d'avance.

+0

quelle est la valeur de user.get_department_name? – Sajin

+0

"Marketing", "Ventes", "Production Contorl" etc. – jissy

+0

try @queue = user.get_department_name.downcase.gsub ('', '_'). To_sym – Sajin

Répondre

0

Maintenant, le code ci-dessous sera en mesure de définir des noms de file d'attente définis par l'utilisateur:

WeeklyUserUpdates.enqueue(tenant,user.id) 

définissaient la méthode enqueue dans les travailleurs/weekly_user_updates.rb

def self.enqueue(user_id) 
    Resque::Job.create(select_queue_name(user_id),self,user_id) 
end 

def self.select_queue_name(userid) 
    queue_name = User.find_by_id(userid).department_name 
end