【发布时间】:2020-07-13 17:21:58
【问题描述】:
有四个表 - chat_rooms、chat_messages、chat_rooms_and_users 和 users:
-
chat_rooms- 房间有消息和用户。 -
chat_rooms_and_users- 通过这个表,用户可以连接到房间。
每个房间可以有两个用户。
如何找到认识两个用户的房间?
我试过这样:
room = joins(:chat_rooms_and_users)
.find_by(
type: ChatRoom.types[:private],
chat_rooms_and_users: {
user: [user_a, user_b]
}
)
SELECT "chat_rooms".* FROM "chat_rooms" INNER JOIN "chat_rooms_and_users" ON "chat_rooms_and_users"."room_id" = "chat_rooms"."id" WHERE "chat_rooms"."type" = $1 AND "chat_rooms_and_users"."user_id" IN ($2, $3) LIMIT $4 [["type", 0], ["user_id", 497], ["user_id", 494], ["LIMIT", 1]]
这在 SQL 代码中困扰着我:
"chat_rooms_and_users"."room_id" = "chat_rooms"."id"
如果没有房间,则正常创建第一个房间。但是总是只有 ID 比其他房间在前的房间。
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-6