Rails находит запись со всеми соответствующими идентификаторами ассоциаций
У меня есть связь HABTM между пользователями и чатами. Я'Я пытаюсь найти чат с двумя конкретными пользователями в нем. Я старался:
scope :of_users, ->(user1,user2) { joins(:users).where( users: { id: [ user1.id, user2.id ] } ) }
Chat.of_users( user1, user2 )
Но он дает мне все чаты, в которых находится один из двух пользователей.
Я также попробовал:
Chat.joins(:users) & User.where(id:1) & User.where(id:2)
Didn»дайте мне правильные результаты либо. Что я ищу? Я'искал повсюду, но я нене знаю название этой концепции ...
РЕДАКТИРОВАТЬ:
Моя модель чата:
class Chat < ActiveRecord::Base
has_and_belongs_to_many :users
scope :of_users, ->(user1,user2) { joins(:users).where( users: { id: [ user1.id, user2.id ] } ) }
end
Моя модель пользователя:
class User < ActiveRecord::Base
has_and_belongs_to_many :chats
end
Схема для пользователя и чата:
create_table "chats", :force => true do |t|
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "chats_users", :id => false, :force => true do |t|
t.integer "chat_id"
t.integer "user_id"
end
add_index "chats_users", ["chat_id", "user_id"], :name => "index_chats_users_on_chat_id_and_user_id"
add_index "chats_users", ["user_id"], :name => "index_chats_users_on_user_id"