2010-02-02 7 views
2

J'ai installé un processus dans mon modèle de l'utilisateur d'envoyer un groupe de @users à un script d'envoi, user_mailer.rbutilisateur Mailer défaut

J'utilise l'application http://postageapp.com pour envoyer des e-mails. Les utilisateurs accèdent au User_mailer mais je reçois une erreur à partir de là. Est-ce que quelqu'un pourrait me diriger dans la bonne direction.

Modèle utilisateur:

class User < ActiveRecord::Base 

    acts_as_authentic 

    def self.mail_out 

    weekday = Date.today.strftime('%A').downcase 

    @users = find(:all, :conditions => {"#{weekday}sub".to_sym => 't'}) 




    UserMailer.deliver_mail_out(@users) 



    end 

end 

User_mailer.rb

class UserMailer < ActionMailer::Base 
    def mail_out(users) 
    @recipients = { } 
    users.each do |user| 
     @recipients[user.email] = { :zipcode => user.zipcode } 
    end 


    from  "[email protected]" 
    subject  "Check out the trailer of the day!" 
    body  :user => user 
    end 

end 

mail_out.html.erb

{{zipcode}}, 

Please check out the trailer of the day at http://www.dailytrailer.net 


Thank you! 
-- 
The DailyTrailer.net Team 

schéma utilisateur db

create_table "users", :force => true do |t| 
    t.string "email" 
    t.date  "birthday" 
    t.string "gender" 
    t.string "zipcode" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "crypted_password" 
    t.string "password_salt" 
    t.string "persistence_token" 
    t.string "mondaysub",   :default => "f", :null => false 
    t.string "tuesdaysub",  :default => "f", :null => false 
    t.string "wednesdaysub",  :default => "f", :null => false 
    t.string "thursdaysub",  :default => "f", :null => false 
    t.string "fridaysub",   :default => "f", :null => false 
    t.string "saturdaysub",  :default => "f", :null => false 
    t.string "sundaysub",   :default => "f", :null => false 
    end 

Erreur:

/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48: undefined method `name' for #<User:0xb6e8ae48> (NoMethodError) 
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:5:in `mail_out' 
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:4:in `each' 
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:4:in `mail_out' 
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:459:in `__send__' 
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:459:in `create!' 
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:452:in `initialize' 
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:395:in `new' 
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:395:in `method_missing' 
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user.rb:13:in `mail_out' 
    from (eval):1 
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `eval' 
    from /var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48 
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    from script/runner:3 
+1

Quelle est l'erreur que vous recevez? –

+0

Désolé de l'avoir oublié, je l'ai mis dans la question. –

Répondre

2

Je ne suis pas sûr que ce soit la solution complète (quelle erreur vous obtenez?), Mais il est quelque chose qui doit être fixé: sur la ligne body :user => user, la variable user n'est pas défini. Voulez-vous dire :user => @recipients?

+0

Désolé de l'avoir oublié, je l'ai mis dans la question. –

+0

J'ai essayé ça et je n'ai pas eu d'erreur :) Merci beaucoup. –

0

Une chose que je remarque dans votre code est que votre classe mailer ne provient pas de Postage :: Mailer.

Alors d'abord vous assurer que vous avez le dernier plugin PostageApp installé et puis regardez quelques exemples de code ici: http://postageapp.com/docs/rails

Il y a aussi un exemple d'application ici: http://blog.postageapp.com/2009/11/rails-example-app/

Un autre détail que j'ai remarqué dans votre code est en la ligne body :user => user n'est pas nécessaire parce que vous n'utilisez pas la variable user à votre avis en plus du fait que, comme Alex l'a mentionné, ce n'est pas défini à ce moment-là.

Espérons que ça aide!

Questions connexes