У меня был предыдущий вопрос, который помог мне oop через всех пользователей, где встречается определенный вопрос.
Однако я понимаю, что не могу жестко закодировать это условие. Мне нужно как-то получить эти данные из отправленной формы, что, похоже, невозможно в почтовой программе.
Другими словами, я пытаюсь l oop через всех пользователей, где состояние пользователя равно home_state вводимого кандидата. В основном, когда кандидат создается, я хочу получить home_state этого кандидата, а затем l oop через всех пользователей, и для каждого пользователя, который находится в том же состоянии, что и этот кандидат, я хочу отправить им электронное письмо через эту почтовую программу.
Вот мой файл кандидата_mailer.rb
class CandidateMailer < ApplicationMailer
default from: 'wesleycreations@gmail.com'
def self.send_request(row)
@candidate = Candidate.new(candidate_params) # if I can access this here, how to I create the
# following array?
emails = []
User.where(state: @candidate.home_state).each do |u|
emails << u.email # To insert the user email into the array
end
emails.each do |email|
new_request(email,row).deliver_now
end
end
def new_request(email, row)
@candidate = row
mail(to: email, subject: 'New request')
end
end
Но
@candidate = Candidate.new(candidate_params)
явно не работает, потому что параметры недоступны в почтовой программе.
Здесь, в файле кандидата_controller.rb, у меня есть это
def create
@candidate = Candidate.new(candidate_params) #of course here I can access params
if @candidate.save
row = @candidate
CandidateMailer.send_request(row)
else
render('new')
end
end
Итак, вопрос в том, как мне получить доступ к параметрам в почтовой программе rails? А если я не могу, то как мне реорганизовать свой код, чтобы строки, проверяющие, соответствует ли пользователь определенному условию, выполнялись в контроллере?