Ruby on rails 来自SQL查询的Rails 6上拉计数
我想统计所有未读的用户消息。为此,我使用以下查询:Ruby on rails 来自SQL查询的Rails 6上拉计数,ruby-on-rails,psql,Ruby On Rails,Psql,我想统计所有未读的用户消息。为此,我使用以下查询: Conversation.joins(:messages) .select('conversations.*', 'COUNT(messages.*) AS unread_message_count') .where(sendable: current_user, messages: { read: false }) .group(:id) 这给了我一个ActiveRec
Conversation.joins(:messages)
.select('conversations.*', 'COUNT(messages.*) AS unread_message_count')
.where(sendable: current_user, messages: { read: false })
.group(:id)
这给了我一个ActiveRecord::关系,而不是未读消息的数量。如果我在末尾添加.count
:
Conversation.joins(:messages)
.select('conversations.*', 'COUNT(messages.*) AS unread_message_count')
.where(sendable: current_user, messages: { read: false })
.group(:id).count
我得到一个错误:
ActiveRecord::StatementInvalid(PG::SyntaxError:ERROR:语法错误位于或接近“AS”)
第1行:选择计数(对话),计数(消息)为未读内容
查询消息表而不是对话怎么样?->
Message.joins(:conversation).where(对话:{sendable:current_user}).where(读:false).count
我做了很多不必要的思考,@SampatBadheMessage.joins(:conversation).where(读:false,对话:{sendable:current_user}).where.not(可留言:当前用户)。计数是我想要的-谢谢你的提示。