2015-07-07 3 views
0

Я пытаюсь отправить электронную почту пользователям, которые подписываются на других пользователей, отправляя сообщения.Rails 4 Передача электронной почты Mailer

Я получаю сообщение об ошибке:

ActiveRecord::RecordNotFound - Couldn't find User with 'id'=272: 

272 является идентификатор одной из подписок. Я смущаюсь со всеми движущимися частями здесь. Как я могу отправить подписчиков?

Сообщений Контроллер

def create 
    @post = current_user.posts.new(post_params) 
    if @post.save 
     @subscribers = current_user.subscribers 
     @subscribers.each do |f| 
      SubscriptionMailer.send_prayer_request(@post, f).deliver 
     end 
[...] 

Подписка Mailer

class SubscriptionMailer < ActionMailer::Base 
    def send_prayer_request(post, subscriber) 

    @u = User.find(subscriber) 
    mail( :to => @u.email, 
       :from => "[email protected]", 
       :subject => "New Post! " 
      ) 
    end 

end 

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

def subscribers 
    Subscription.where(subscribe_to_id: self.id) 
end 

схемы для соответствующих таблиц

create_table "subscriptions", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "subscribe_to_id" 
    t.datetime "created_at",  null: false 
    t.datetime "updated_at",  null: false 
end 

create_table "users", force: :cascade do |t| 
    t.string "email",   default: "", null: false 
    t.string "username",  default: "", null: false 
    t.string "first_name" 
    t.string "last_name" 
end 

Спасибо за любую помощь вы можете предложить.

ответ

1

Изменение @u = User.find(subscriber) по @u = User.find(subscriber.user_id) В противном случае вы пытаетесь найти пользователя с идентификатором, который соответствует ID абонента (отличается от user_id абонента).

+0

Спасибо! Я знал, что я недалеко, но ничего не сделал. Все еще обертываю голову вокруг Rails. :) –

+0

Рад помочь Рич. –

+0

btw люблю ваш сайт в качестве единоверца :) GB –

Смежные вопросы