Я пытаюсь разработать систему отчетности, которая уведомляет администраторов о частоте сообщений пользователя и времени отклика для приложения обслуживания клиентов.
У меня есть класс арендатора, который выглядит следующим образом:
class Tenant < ApplicationRecord
has_many :users
has_many :chat_messages
end
И пользовательский класс, который выглядит следующим образом:
class User < ApplicationRecord
belongs_to :organization
has_many :authored_conversations, class_name: 'Conversation', :as => :author
has_many :chat_messages, as: :user, dependent: :nullify
has_many :received_conversations, :as => :receiver, class_name: 'Conversation'
def conversations
authored_conversations + received_conversations
end
def response_time
# calculate the user's average response time
end
end
Прямо сейчас нам нужно вручную запустить грабли, чтобы заняться бизнесом.Но автоматизировать процесс было бы намного лучше.
Разработан класс ReportGenerator, подобный следующему:
class ReportGenerator
def initialize(org_id)
@organization = Organization.find org_id
end
def generate_report
report = Report.generate(@organization)
ReportMailer.new_report(report).deliver_later
end
end
Я также настроил свой почтовик так:
class ReportMailer < ApplicationMailer
default from: ENV["DEFAULT_MAILER_FROM"],
template_path: 'mailers/chat_message_mailer'
def new_message(report, recipient)
@report = report
@recipient = recipient
@subject = "Monthly report for #{report.created_at}"
@greeting = "Hi, #{recipient.name}"
@body = @report.body
mail(to: @recipient.email, subject: @subject)
end
end
Однако, Я изо всех сил пытаюсьнастроить расписание Я нашел этот пример Но я верю, что это может очень быстро выйти из-под контроля.Я также хочу знать, Каков наилучший подход?Выполнить фоновое задание или грабли?