1

我不知道它是什么,但我似乎无法弄清楚

我坚持的是,我有两个模型,它们之间有一个 HABTM 关联。

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

如果你想知道两个用户的公共事件的数量,那么,没有花哨的 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 回答