Rails活动记录,我如何查询HABTM关系

时间:2018-03-20 19:15:34

标签: ruby-on-rails activerecord has-and-belongs-to-many

我有2个具有HABTM关系的模型

User

has_and_belongs_to_many :rooms

Room

has_and_belongs_to_many :users

我还创建了迁移以加入表格

create_join_table :users, :rooms do |t|
      t.index [:user_id, :room_id]
      t.index [:room_id, :user_id]
end

我想在用户A的房间中查询包含用户B的user_id的房间。我该怎么办?

2 个答案:

答案 0 :(得分:1)

我不确定你是否可以在单个SQL调用中执行此操作,但听起来你想要两个集合的联合。

UserA.rooms & UserB.rooms

这应该为您提供两个用户共享的房间。

答案 1 :(得分:0)

这应该有效

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})