В моем приложении есть пользователи и сайты (воспринимайте это как пользователей и организации). Между ними находится таблица поиска, которая называется SiteUser. В SiteUser:
belongs_to :site
belongs_to :user
before_validation :set_user_id, if: ->() { email != nil }
def set_user_id
existing_user = User.find_by(email: email)
self.user = if existing_user.present?
UserMailer.notify_existing_user(site, existing_user).deliver_now unless Rails.env.test?
existing_user
else
User.invite!(email: email)
end
end
Мне нужно, чтобы тема создаваемого электронного письма включала название сайта. «Пример Компания пригласила вас присоединиться к их сайту!»
И в теле письма мне также нужен заголовок сайта.
Я не совсем понимаю, как перевести параметр сайта в devise invitable
. Как вы можете видеть из приведенного выше кода, если пользователь, приглашаемый на сайт, уже существует в нашей системе, я использую свою собственную почтовую программу, в которой я передаю site
и existing_user
, поэтому у меня есть доступ к нему. по моему почтовому представлению.
class UserMailer < ApplicationMailer
def notify_existing_user(site, user)
@site = site
@user = user
mail to: @user.email, subject: "You've been given access to #{@site.title} in the Dashboard."
end
end
Я не могу понять, как сделать это подобным образом с помощью devive invitable mailer, который используется, когда пользователь еще не существует в системе.
Любая помощь, которую вы могли бы оказать, будет невероятно признательна!