4

ユーザーとチャットの間に HABTM 関連付けがあります。2 人の特定のユーザーがいるチャットを見つけようとしています。私は試した:

scope :of_users, ->(user1,user2) { joins(:users).where( users: { id: [ user1.id, user2.id ] } ) }
Chat.of_users( user1, user2 )

しかし、2 人のユーザーのうちの 1 人が参加しているすべてのチャットが表示されます。

私も試しました:

Chat.joins(:users) & User.where(id:1) & User.where(id:2)

正しい結果も得られませんでした。私は何を探していますか?いろいろ調べたのですが、この概念の名前がわかりません...

編集:

マイ チャット モデル:

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"
4

2 に答える 2

1

user1.chats & user2.chatsユーザーモデルの正しいHABTMに従って

于 2013-09-19T09:17:08.200 に答える