私は次のモデルを持っています、
class Exam
has_many :registrations
end
class Registration
belongs_to: user
belongs_to: lesson
end
class Lesson
has_many :exam_registrations
belongs_to :user
end
class User
has_many :registrations, :through => lessons
end
試験が更新されるたびに、登録されているすべてのユーザーに電子メールが配信されるように、自動化された電子メールを設定しようとしています。アクションメーラーをセットアップして、ネストされていない他のリソースで動作させていますが、この特定のケースは、過去数日間私を困惑させました.
mailer.rb
def inform_exam_venue(user, student, lesson, exam_registration, exam)
@user = user
@student = student
@lesson = lesson
@exam_registration = exam_registration
@exam = exam
mail(:to => "#{student.name} <#{student.email}>", :subject => "Exam registration update")
end
Exams_controller.rb
def update
@exam = Exam.find(params[:id])
@exam_registration = @exam.exam_registrations.find(params[:id])
@lesson = @exam_registration.lesson
@user = User.where("id =? ", @exam_registration.user_id).first
@student = Student.where("id =? ", @exam_registration.student_id).first
respond_to do |format|
if @exam.update_attributes(params[:exam])
Mailer.inform_exam_update(@user, @student, @lesson, @exam_registration, @exam).deliver
format.html { redirect_to @exam, notice: 'Exam was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
私のコントローラーコードは明らかに間違っていますが、これを設定する方法についての指示が見つからないようです。助けてください。