2

私のアプリでは、が を で作成Userすると、そのコメントを未読としてマークする が生成されます。CommentPostNotifications

class Notification < ActiveRecord::Base
  belongs_to :user
  belongs_to :post
  belongs_to :comment

class User < ActiveRecord::Base
  has_many :notifications

class Post < ActiveRecord::Base
  has_many :notifications

ユーザーのすべての投稿と、そのユーザーだけの各投稿の通知数を一覧表示するインデックス ページを作成しています。

# posts controller
@posts = Post.where(
    :user_id => current_user.id
  )
  .includes(:notifications)

# posts view
@posts.each do |post|
  <%= post.notifications.count %>

すべてのユーザーの通知をカウントするため、これは機能しません。各投稿で個別のクエリを実行せずに、1 人のユーザーの通知をカウントする効率的な方法は何ですか?

4

3 に答える 3

0

次のようなことができます。

@posts=Post.joins(:notifications).where('notification.user_id' => current_user.id)

notification.user_idcurrent_user の通知の ID はどこですか

于 2013-11-09T03:31:16.530 に答える