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

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -