2016-04-29 10 views
1

これらの関係を持つ求人掲示板で働いています。ユーザーは多くの求人に応募でき、ジョブには多くの応募者(ユーザー)がいます。会社には多くの仕事があります。Rails:ユーザーがジョブに応募したときに会社に電子メール通知を送信

ユーザー:

has_many :applications 

has_many :jobs, :through => :applications, :uniq => true 

仕事

has_many :applications 

has_many :users, :through => :applications 

アプリケーション

belongs_to :user 

belongs_to :job 

会社

has_many :jobs, dependent: :destroy 

私は、ユーザーが仕事に応募したときに会社に電子メールを送信する機能を実装したいと思います。

これは私のメーラーである:私は多少の誤差があるobvioulsyユーザーが適用された後、私は会社に電子メールを送信するために変更したり、追加する必要があります

class NotificationMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def job_application(company) 
    @company = company 
    @job = job   
    @applications = @job.applications 
    company = @job.application.company 
    mail(to: @company.email, subject: 'Ha recibido una postulacion') 
    end 
end 

Application.rb

after_create :send_email 

def send_email 
    NotificationMailer.job_application(self.company).deliver 
end 

仕事に?ありがとう。ジョブモデルへ

答えて

1
  1. 移動after_create :send_emailsend_email方法[ジョブレコードが(すなわち。ユーザがジョブに適用されるとき)に作成されたときに、この電子メールをトリガしたいのでsend_email方法に

  2. 変更(予告arguement自己)

    def send_email 
        NotificationMailer.job_application(self).deliver 
    end 
    
  3. 簡素化あなたのNotificationMailer方法

    def job_application(job) 
        @applications = job.applications 
        mail(to: job.company.email, subject: 'Ha recibido una postulacion') 
    end 
    
+0

おかげで、しかし、開発中のユーザーは、私が「#<アプリケーション:0xaac7150>のために未定義のメソッド '同社の」エラーを得たジョブに適用されたときのコードのためにApplication.rb – hemakesnoise

+0

application.rbではself.companyを参照し、selfは 'Application'であるため、companyというメソッドはありません。実際の修正は、このコードをJobモデルに移動することです。 – Akilas

+0

私はafter_create:send_emailとsend_emailメソッドをApplication.rbで取得しました。アプリケーションが作成されたときにトリガーされた電子メールがジョブではなく、ユーザーはジョブに応募できますが、メールは送信されません。 – hemakesnoise

関連する問題