2010-11-18 26 views
0

CREATE bilmek Sorun şu ki, eğer response_to'dan önce, kayıt henüz kaydedilmemiş, bu yüzden bir şeyler ters gidebilir, ancak kullanıcı yine de bir e-posta alacaktır.raylar, nasıl DEF ben şu var

UserMailer.xxxxxxxxx_notification(objecthere).deliver 

Ve ben respond_to bloğunun içinde bir posta koyamazsınız tahmin ediyorum. Öneriler?

cevap

7

Bu, gözlemcisi'un ne için kullanıldığıdır.

config/application.rb yılında

class PermissionObserver < ActiveRecord::Observer 
    def after_create(permission) 
    # put your mailer code here 
    end 
end 

app/models/permission_observer.rb izleyiciye

config.active_record.observers = :permission_observer 

Sen gözlemciler here hakkında daha fazla bilgi bulabilirsiniz eklemek oluşturun.

Ayrıca, oluşturmak yerine @project.permissions.new kullanıyor olmalısınız. Oluşturma, modeli hemen kaydeder ve @permission.save aramanızı yedekli kılar.

Bunu bir kez hazırladıktan sonra, posta kodunuzu zaman uyumsuz hale getirerek, web isteklerini karşılayamayacak şekilde incelemeniz gerekir. Delayed_job kullanarak Here's an example.

0

Yoksa kodunuzu düzenleyebilirsiniz:

def create 
    @permission = @project.permissions.build(params[:permission]) 

    if @permission.save 
    UserMailer.xxxxxxxxx_notification(objecthere).deliver 
    respond_to do |format| 
     format.js 
    end 
    else 
    respond_to do |format| 
     format.js { render :js => @permission.errors } 
    end 
    end 
end 
0

Yoksa İzin modelinde bir geri arama koyabilirsiniz:

class Permission 
    after_create :send_mail 

    def send_mail 
    UserMailer.xxxxxxxxx_notification(self).deliver 
    end 
end