Для этого используются наблюдатели .
создать app/models/permission_observer.rb
class PermissionObserver < ActiveRecord::Observer
def after_create(permission)
# put your mailer code here
end
end
в config/application.rb
добавить наблюдателя
config.active_record.observers = :permission_observer
Подробнее о наблюдателях можно прочитать здесь .
Кроме того, вы должны использовать @project.permissions.new
вместо создания. create немедленно сохраняет модель, делая ваш @permission.save
вызов избыточным.
Как только вы это сделаете, вам нужно сделать асинхронный код почтовой программы, чтобы он не задерживал веб-запросы. Вот пример с использованием delayed_job.