Action Mailer,向我向其发送消息的用户发送电子邮件

Action Mailer, sending email to user to whom I sent a message

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。效果很好。

上面的代码当然不行。我会很感激任何想法。

由于您使用的是 id,因此您需要通过它找到用户

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