ユーザーとグループの 2 つのモデルがあります。ユーザーがグループに参加するたびに、そのグループのすべてのメンバーに電子メールが送信されます。バックグラウンドでメールを送信する Resque ワーカーがあります。
問題は次のとおりです。Resque タスクの前または内部で反復する必要がありますか?
Example 1 (before):
# inside controller action
@group = Group.find(params[:group_id])
@group.users.each do |user|
Resque.enqueue(EmailSender, {:user_id => user.id})
end
# inside worker
class EmailSender
@queue = :emails_queue
def self.perform(args = {})
user = User.find(args['user_id'])
Sender.send('new_member', {:user => user}).deliver
end
end
または
Example 2 (inside):
# inside controller action
@group = Group.find(params[:group_id])
Resque.enqueue(EmailSender, {:group_id => @group.id})
# inside worker
class EmailSender
@queue = :emails_queue
def self.perform(args = {})
group = Group.find(args['group_id'])
group.users.each do |user|
Sender.send('new_member', {:user => user}).deliver
end
end
end
例 1 または例 2 を使用する必要がありますか?
ありがとうございました