ログインしておらず、「user2」と呼ばれる別の Devise モデルを使用している別のユーザーにメールを送信しようとしています。彼らは「user」とは異なる方法でサイトを使用しています。新しいメッセージを作成すると、次のようにして current_user にメールを送信できます。
UserMailer.new_message_sent_user(current_user).deliver
次に UserMailer で:
def new_message_sent_user(user)
@user = user
mail to: @user.email, subject: "New message sent to user2!"
end
ただし、「user2」にもメールを送信する必要がありますが、IDでそれらを見つけてアクションメーラーにメールを渡すのに苦労しています。メッセージの作成時に正常に保存されているため、user2_id に値があることはわかっています。新しいアクションで私は見つけました:
@user2 = User2.find(:first,:conditions=>["id = ?", @post.user2_id])
次に、作成時に私が持っている
UserMailer.new_message_sent_user2(@user2).deliver
次に、UserMailer には次のようなものがあります。
#send to advisor when he has sent a new message to an advisor
def new_message_sent_user2(user2)
@user2 = user2
mail to: @user2.email, subject: "You have received a message from user"
end
しかし、エラーが発生しました。メールがゼロだと言っていると思いますが、メールを送信するように user2 オブジェクトを見つけて設定するにはどうすればよいですか?:
undefined method `email' for nil:NilClass
どんな助けでも大歓迎です!
create アクションで更新します。
# POST /messages
# POST /messages.json
def create
@message = current_user.messages.build(params[:message])
respond_to do |format|
if @message.save
UserMailer.new_message_sent_user(current_user).deliver
UserMailer.new_message_sent_user2(@user2)
format.html { redirect_to users_path, notice: 'Your message has been sent!' }
format.json { render json: @message, status: :created, location: @message }
else
format.html { render action: "new" }
format.json { render json: @message.errors, status: :unprocessable_entity }
end
end
end