1

私はそれが何であるかわからないが、私はこれを理解できないようだ

私が立ち往生しているのはこれです.HABTMが互いに関連付けられている2つのモデルがあります。

class Event < ActiveRecord::Base
  has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :events
end

そのため、イベントを作成すると、複数のユーザーが関連付けられます。ユーザー 1 と 2 が 3 つのイベントに一緒に参加しているとします。ここで、それらのインスタンスをカウントしたいと思います。だから3番を返してもらいたい。

単純なはずだと思いますが、理解できません。誰かが私を正しい方向に向けることができますか? 前もって感謝します。

4

2 に答える 2

1

共通の 2 人のユーザーを持つすべてのイベントを探している場合は、すべてのイベントをクエリし、各ユーザーの結果をフィルター処理できます。

user1 = User.find(1)
user2 = User.find(2)
events = Event.all
common_events = events.select {|e| e.users.include?(user1) and e.users.include?(user2)}

この変数common_eventsには、user1 と user2 の両方が参加しているイベントが含まれます。

于 2012-05-25T15:13:46.193 に答える
1

2 人のユーザーの共通イベントの量を知りたい場合は、高度な SQL を使用せずに、次のように実行できます。

events1 = User.find(1).events.scoped
events2 = User.find(2).events.scoped

common_events_count = Event.where(id: events1).where(id: events2).count
于 2012-05-25T16:54:05.693 に答える