Rails 活动记录,如何在 HABTM 关系中查询
Rails active record, how can I query in HABTM relation
我有 2 个具有 HABTM 关系的模型
User
has_and_belongs_to_many :rooms
Room
has_and_belongs_to_many :users
我也像这样创建迁移以加入 table
create_join_table :users, :rooms do |t|
t.index [:user_id, :room_id]
t.index [:room_id, :user_id]
end
我想查询用户A的房间中,用户B的user_id所在的房间。我该怎么做?
这应该有效
user_b = User.find(id: 123) #or id of user b
user_a = User.find(id: 234) #or id of user a
user_b.rooms.joins(:users).where(users: {id: user_a.id})
我不确定您是否可以在单个 SQL 调用中完成此操作,但听起来您想要两个集合的并集。
UserA.rooms & UserB.rooms
这应该会为您提供两个用户共享的房间。
我有 2 个具有 HABTM 关系的模型
User
has_and_belongs_to_many :rooms
Room
has_and_belongs_to_many :users
我也像这样创建迁移以加入 table
create_join_table :users, :rooms do |t|
t.index [:user_id, :room_id]
t.index [:room_id, :user_id]
end
我想查询用户A的房间中,用户B的user_id所在的房间。我该怎么做?
这应该有效
user_b = User.find(id: 123) #or id of user b
user_a = User.find(id: 234) #or id of user a
user_b.rooms.joins(:users).where(users: {id: user_a.id})
我不确定您是否可以在单个 SQL 调用中完成此操作,但听起来您想要两个集合的并集。
UserA.rooms & UserB.rooms
这应该会为您提供两个用户共享的房间。