2012-02-08 1 views
3

나는 resque를 통해 전자 메일을 보내고 있습니다. 이 이메일은 로컬에서 개발이 잘되지만 스테이징 서버에서는 실패합니다.resque를 통해 전자 메일 보내기 : 해시로 처리되는 개체

'Admin'개체를 관리 개체로 처리하는 대신 해시로 보입니다. 어떤 아이디어?

account.rb

class Account < ActiveRecord::Base 
    after_commit :send_welcome_email 

    def send_welcome_email 
     SubscriptionNotifier.welcome(self).deliver 
    end 

end 

subscription_notifier.rb

class SubscriptionNotifier < ActionMailer::Base 

    def welcome(account) 
    @subscriber = account 
    mail(:to => account.admin.email, :subject => "Welcome!") 
    end 

end 

Resque 오류

SubscriptionNotifier Arguments 

    "welcome" 
    {"account"=>{"address_line1"=>nil, "address_line2"=>nil, "city"=>nil, "created_at"=>"2012-02-08T10:56:22-08:00", "currency"=>"United States Dollar (USD)", "deleted_at"=>nil, "description"=>nil, "email"=>"[email protected]", "full_domain"=>"www.test.net", "id"=>3, "initial_plan"=>nil, "latitude"=>nil, "longitude"=>nil, "name"=>"macs", "phone"=>nil, "setup_steps_complete"=>0, "state"=>nil, "time_zone"=>"Pacific Time (US & Canada)", "updated_at"=>"2012-02-08T10:56:22-08:00", "website"=>nil, "zip"=>nil}} 

Exception 
    NoMethodError 
Error 
    undefined method `admin' for #<Hash:0x0000000585aa70> 
+0

실제로 'SubscriptionNotifier.welcome (...). deliver'를 호출하기 위해 사용하는 코드는 무엇입니까? –

+0

Resque 작업자 코드를 추가하고이를 호출하는 방법을 보여줄 수 있습니까? – bensie

+0

게시물을 업데이트했습니다. Resque 작업자 코드는 subscription_notifier에 있습니다. 마치 Rails env가로드되지 않은 것처럼 보이지만 'rake resque'로 시작합니다 : work QUEUE = '*'RAILS_ENV = staging ' – 99miles

답변

0

당신은 '레이크 환경 resque 실행하여 환경을로드해야합니다 작업 대기열을 = '*'RAILS_ENV = 준비 '

"설치 resque"=> 환경 resque.rake 파일에 정의

당신이

작업이없는 경우입니다

. 분명히 당신은 해시로 account를 전달하는, 내가 같은 오류가 발생한

def welcome(account_admin_email) 
    @subscriber = account 
    mail(:to => account_admin_email, :subject => "Welcome!") 
    end 

subscription_notifier.rb에 account.rb

def send_welcome_email 
     SubscriptionNotifier.welcome(self.admin.email).deliver 
    end 

에서

을 그리고 있습니다

0

이 시도 이메일이 없습니다 admin 방법. 따라서 send_welcome_email 메소드에서 이메일을 가져 와서 매개 변수로 전달하십시오. 대신 해시를 전달하고 환영 메소드에서 이메일에 액세스하려고 시도하십시오.

참고 : @subscriber를 들어, 그냥 이메일처럼, 당신은 환영 방법

희망이 도움의 모델 예를 self.admin.name의 이메일 템플릿에서 사용 @name = account_admin_name의 매개 변수를 전달해야합니다.

1

계정 ID를 대기열에 전달하고 작업자가 수행 메소드를 수행 할 때 계정 객체를 가져와야한다고 생각합니다. 그것은 당신의 해시 비애를 줄여야합니다.