最初のステップは、通知用の新しいモデルとコントローラーを作成することです
$ rails g model Notification post:references comment:references user:references read:boolean
$ rake db:migrate
$ rails g controller Notifications index
これが完了したら、次のステップは has_many :notifications を User、Post、および Comment モデルに追加することです。
これが完了したら、次のコードを Comments モデルに追加します。
after_create :create_notification
private
def create_notification
@post = Post.find_by(self.post_id)
@user = User.find_by(@post.user_id).id
Notification.create(
post_id: self.post_id,
user_id: @user,
comment_id: self,
read: false
)
end
上記のスニペットは、コメントが作成されると通知を作成します。次の手順では、通知コントローラーを編集して、通知を削除し、ユーザーが通知を既読としてマークできるようにします。
def index
@notifications = current_user.notications
@notifications.each do |notification|
notification.update_attribute(:checked, true)
end
end
def destroy
@notification = Notification.find(params[:id])
@notification.destroy
redirect_to :back
end
次に行うことは、コメントが削除されたときに通知を削除する方法を設定することです。
def destroy
@comment = Comment.find(params[:id])
@notification = Notification.where(:comment_id => @comment.id)
if @notification.nil?
@notification.destroy
end
@comment.destroy
redirect_to :back
end
最後に、いくつかのビューを作成します。やりたいことは何でもできる