ApplicationMailerのアクションに、配列を引数に渡すとSerializationErrorになる
質問させていただきます。
RubyonRailsで、サイトを作成しております。
モデルが更新された際に
複数の宛先へのメールの送信を行おうと考えています。
しかしMailerに送信したいユーザー一覧を渡すとエラーとなってしましました。
ユーザー一覧は、Applicantsという別のモデルのuser_idと
一致するユーザーを抽出しております。
何か解決策があればご教授いただければと思います。
エラーメッセージ
ActiveJob::SerializationError in EventsController#update
Unsupported argument type: ActiveRecord::Relation
events_controller.rb
def update
if @event.update(event_params)
applicants = @event.applicants
@users = User.where(id: applicants.pluck(:user_id))
EventMailer.update_to_applicants_email(@users,@event).deliver_later
else
render 'edit'
end
end
event_mailer.rb
class EventMailer < ApplicationMailer
default from: 'xxx@example.com'
def update_to_applicants_email(users,event)
@event = event
mail to: users.pluck(:email)
mail(subject: "#{@event.name}が更新されました")
end
end
pryで@usersを確認
pry(#<EventsController>)> @users
=>[#<User:0x007fef31ec4668
id: 14,
email: “111@example.com",
中略
>,
#<User:0x007fef31ec4528
id: 15,
email: “222@example.com",
中略
>]
なお、試しに@usersを@userにし、1人のuserを引き渡したところ、
上記のエラーは発生しませんでした。
pryで@userを確認
pry(#<EventsController>)> @user
=>#<User:0x007fef35520518
id: 14,
email: "111@example.com",
中略
>
よろしくお願い致します。