2017-06-12 94 views
0

在我的rails4應用程序中,我需要在一週內向所有用戶發送一次電子郵件。用戶屬於不同的部門。我需要根據部門明智的隊列名稱來組織郵件發送。但是,我不知道如何在發送郵件時將隊列名稱作爲參數。所有郵件使用相同的隊列名稱'weekly_user_activity_queue'。不按以下定義設置到部門名稱隊列。我怎樣才能做到這一點。代碼如下所示:在Resque郵件程序中設置不同的隊列名稱

的Gemfile

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

應用程序/郵寄/ 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 

請幫助。提前致謝。現在

+0

有什麼價值user.get_department_name? – Sajin

+0

「營銷」,「銷售」,「生產控制」等 – jissy

+0

嘗試@queue = user.get_department_name.downcase.gsub('','_')。to_sym – Sajin

回答

0

,下面的代碼就可以設置用戶定義的隊列名稱:

WeeklyUserUpdates.enqueue(tenant,user.id) 

定義的排隊方法在工人/ 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  
相關問題