Это полный вопрос новичка, но мне интересно, может ли кто-нибудь помочь с установкой почтовой программы.У меня есть модель 'users' и вложенная в нее модель 'contacts' (с отношением has_many / own_to).
Я сейчас пытаюсь создать почтовую программу, которая будет запускаться определенным действием (создатьсообщение) на странице пользователя, и будет по электронной почте все контакты, принадлежащие этому пользователю.Но я не могу взломать синтаксис, необходимый для почтовой программы - я попытался установить получателей на @user.contacts.all
, и я пробовал циклически просматривать их, как с этим решением .Кто-нибудь может посоветовать самый чистый способ сделать это?
Вот код, который у меня пока есть:
Posts controller:
after_create :send_contact_email
private
def send_contact_email
ContactMailer.contact_email(self).deliver
end
contact_mailer (это моя последняя попытка, взята с сайта RoR - я подозреваю,это НЕ лучший способ сделать это ...)
class ContactMailer < ActionMailer::Base
def contact_email(user)
recipients @user.contacts.all
from "My Awesome Site Notifications <notifications@example.com>"
subject "Welcome to My Awesome Site"
sent_on Time.now
body {}
end
end
А затем основное сообщение для contact_email.html.erb.
Текущая ошибка:
NoMethodError в UsersController # create_post
неопределенный метод `contacts 'для nil: NilClass.
Любой совет, который вы можете предложить, будет с благодарностью принят!
* Обновление *
Следуя совету Болдрика, метод contact_email
теперь имеет вид:
class ContactMailer < ActionMailer::Base
default :to => Contact.all.map(&:contact_email),
:from => "notification@example.com"
def contact_email(user)
@user = user
mail(:subject => "Post added")
end
end