โอเค ในแอปพลิเคชัน RoR ของฉัน ฉันมีระบบภาพยนตร์ที่ผู้ใช้ตั้งค่าได้ ซึ่งรวมถึงการบันทึกนักแสดงคนโปรดด้วย สิ่งที่ฉันพยายามทำคือรับมัน เพื่อว่าเมื่อมีการเพิ่มภาพยนตร์เรื่องใหม่ หากผู้ใช้มีนักแสดงของภาพยนตร์เรื่องใดที่บันทึกไว้เป็นรายการโปรด พวกเขาจะได้รับอีเมลแจ้งเตือนเกี่ยวกับภาพยนตร์เรื่องนี้
ในนาทีนี้ ฉันสามารถรับมันได้ โดยการใช้คำสั่งwhere เมื่อมีการเพิ่มภาพยนตร์ ผู้ใช้คนแรกในอาร์เรย์จะถูกส่งทางอีเมล films_controller:
def create
@film = Film.new(film_params)
if @film.save
if not @film.cast1.blank?
user1 = Perference.where(actor: @film.cast1).first.user
if not user1.blank?
actor = @film.cast1
FavouriteActor.favourite_actor(user1, actor).deliver
end
end
if not @film.cast2.blank?
user2 = Perference.where(actor: @film.cast2).first.user
if not user2.blank?
actor = @film.cast2
FavouriteActor.favourite_actor(user2, actor).deliver
end
end
if not @film.cast3.blank?
user3 = Perference.where(actor: @film.cast3).first.user
if not user3.blank?
actor = @film.cast3
FavouriteActor.favourite_actor(user3, actor).deliver
end
end
redirect_to @film
else
render 'new'
end
end
จากนั้นไปที่เมล favourite_actor.rb
:
class FavouriteActor < ApplicationMailer
def favourite_actor(user, actor)
@user = user
@actor = actor
@url = 'http://localhost:3000/films'
mail(to: @user.email, subject: 'Your favourite actor stars in a new film')
end
end
ซึ่งจะส่งอีเมล favourite_actor.html.erb
แต่ฉันจะทำอย่างไรเพื่อแทนที่บรรทัดนี้เช่น: user1 = Perference.where(actor: @film.cast1).first.user
เพื่อให้ผู้ใช้ทุกคนที่มีนักแสดงคนโปรดได้รับอีเมล