ruby on rails - How to find the room of two users -
i implementing chatroom data structure.
room.rb
class room < activerecord::base has_many :room_user_ships has_many :users, through: :room_user_ships end room_user_ship.rb
class roomusership < activerecord::base belongs_to :room belongs_to :user end user.rb
class user < activerecord::base has_many :room_user_ships has_many :rooms, through: :room_user_ships end schema.rb
create_table "rooms", force: true |t| t.datetime "created_at" t.datetime "updated_at" end create_table "room_user_ships", force: true |t| t.integer "room_id" t.integer "user_id" end create_table "users", force: true |t| t.string "name" t.datetime "created_at" t.datetime "updated_at" end i can user's rooms , room's users
room = room.find(100) room.users my problem when user alex (user id: 10001) send message user emma (user id: 10002), have find room id of these users, don't know how it.
iterating rooms works not idea.
user = user.find(10001) receiver = user.find(10002) user.rooms.each |room| if room.users.include?(receiver) the_room = room # find it! break end end
assuming have 2 users, like:
room = room.joins(:room_user_ships) \ .where(room_user_ships: { user_id: [user.id, receiver.id] }) \ .where(room_user_ships: { room_id: user.room_ids }).first
Comments
Post a Comment