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
Пока что это решило ошибку, которую я получал