Action Mailer, отправка электронной почты пользователю, которому я отправил сообщение - PullRequest
0 голосов
/ 16 марта 2020

Action Mailer отлично работает с другими моделями. Но у меня есть одна хитрая модель, которая уклоняется от этого. Таким образом, пользователь может видеть профиль другого пользователя. В этом профиле пользователь может отправить этому другому пользователю сообщение. Это сообщение связано с этим другим пользователем через:

Контроллер:

def create
  @message = current_user.messages.build(message_params)
  @user = User.find(params[:user_id])
  @message.gotten_id = @user.id

Хотя это само по себе работало нормально, его трудно использовать с кодом Action Mailer:

Продолжение контроллера:

if @message.save 
  UserMailer.with(message: @message).new_message.deliver_later

Контроллер почтовой программы:

def new_message
  @message = params[:message] 
  mail(to: @message.gotten_id.user.email, subject:"You have a new message!")
end

В других моделях, которые я использовал, например, @comment.post.user.email. Который работал хорошо.

Приведенный выше код, конечно, не работает. Буду признателен за любые мысли.

1 Ответ

1 голос
/ 16 марта 2020

Поскольку вы используете идентификатор, вам нужно найти пользователя по нему

mail(to: User.find(@message.gotten_id).email, subject:"You have a new message!")
...