Rails в приложении Уведомления

Я пытаюсь создать уведомления в rails 5 с помощью кабеля действий. Интересно, кто-нибудь может помочь с моими неприятностями.

В настоящее время у меня есть таблица уведомлений

схема

    create_table "notifications", force: :cascade do |t|
     t.string   "activity"
     t.datetime "created_at",      null: false
     t.datetime "updated_at",      null: false
     t.integer  "user_id"
     t.integer  "recipient_id"
     t.string   "action"
     t.string   "notifiable_type"
     t.integer  "notifiable_id"
     t.index ["user_id"], name: "index_notifications_on_user_id"
     end

Моя модель уведомлений

  class Notification < ApplicationRecord
   belongs_to :user
   belongs_to :recipient, class_name: "User"
   belongs_to :notifiable, polymorphic: true
   after_create_commit { NotificationBroadcastJob.perform_later(Notification.count,self)}

 validates :user_id, presence: true      
end

У меня проблемы с пониманием того, как представлять пользовательские уведомления в контроллере и представлениях.

Например, у меня есть метод создания уведомления при создании определенного действия.

  class Comment < ApplicationRecord
  after_create_commit { create_notification }

 private

def create_notification
Notification.create action: "Your comment has been created", user_id: comment.user, recipient_id: comment.user 
end
end

Здесь я пытаюсь связать пользователя и уведомления вместе во вспомогательном методе в контроллере приложения.

 helper_method :current_notifications

def current_notifications
if current_user
 @notifications = current_user.notifications.all
else 
end
end

Я получаю ошибку

   SQLite3::SQLException: no such column: notifications.recipient_type: SELECT COUNT(*) FROM "notifications" WHERE "notifications"."recipient_id" = ? AND "notifications"."recipient_type" = ?

Моя проблема снова заключается в том, как представлять уведомления пользователя. Я почти уверен, что запутался в том, как связать вещи. Я пытался следовать учебному пособию Криса Оливера, которое я перечислил ниже.

https://gist.github.com/excid3/4ca7cbead79f06365424b98fa7f8ecf6

Любая помощь или исправления будут полезны

2 ответа

В комментарии:

def create_notification
  Notification.create action: "Your comment has been created", user_id: comment.user.id, recipient_id: comment.user.id
end

Мне интересно, если ошибка происходит от прохождения всего user Возражать user_id а также recipient_id а не id сам?

Чуть более критическое мышление позволило мне ответить на мой вопрос, по крайней мере, до сих пор.

В контроллере приложения я использовал

def current_notifications

if current_user
 @notifications = Notification.all.where(user_id: [current_user.id])
else 
end
 end 

Пока что это решило ошибку, которую я получал

Другие вопросы по тегам