计算一个habtm协会的项目

时间:2012-05-25 14:51:30

标签: ruby-on-rails

我不知道它是什么,但我似乎无法弄明白

我坚持的是这个,我有两个模型,彼此之间有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号回到我身边。

我想它应该很简单,但我无法弄明白,有人能指出我正确的方向吗?提前谢谢。

2 个答案:

答案 0 :(得分: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都参与的事件。

答案 1 :(得分: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