Пользователь Mailer Failing - PullRequest
2 голосов
/ 02 февраля 2010

В моей модели User я настроил процесс отправки группы @users в почтовый скрипт user_mailer.rb

Я использую приложение http://postageapp.com для отправки электронных писем. Пользователи добираются до User_mailer, но я получаю оттуда ошибку. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении.

Модель пользователя:

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        "no-reply@dailytrailer.net"
    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

Схема БД пользователя

  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

Ошибка:

/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

Ответы [ 2 ]

2 голосов
/ 02 февраля 2010

Я не уверен, что это полное решение (какую ошибку вы получаете?), Но это нужно исправить: в строке body :user => user переменная user не определена Вы хотите сделать :user => @recipients?

0 голосов
/ 17 марта 2010

Одна вещь, которую я заметил в вашем коде, это то, что ваш класс почтовых программ не является производным от Postage :: Mailer.

Итак, сначала убедитесь, что у вас установлен последний плагин PostageApp, а затем посмотрите пример кода: http://postageapp.com/docs/rails

Здесь также есть пример приложения: http://blog.postageapp.com/2009/11/rails-example-app/

Еще одна деталь, которую я заметил в вашем коде, находится в строке body :user => user не нужен, потому что вы не используете переменную user в вашем представлении, кроме того факта, что, как упоминал Алекс, она не определена в этот момент.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...