1

我有一个轨道设置,如:

class Person
  has_and_belongs_to_many :sports
  ...
end

class Checkin
  belongs_to :person
  ...
end

class Sport
  attr_accessible :name
  has_and_belongs_to_many :people
  ...
end

name我想获取某一天的所有人员签到,但仅限于他们拥有带有“棒球”的 HABTM 记录的地方。我怎样才能做到这一点?

4

2 回答 2

0

这样的事情有用吗?(可能需要更改属性名称)

Sport.where(:name => "Baseball").people.checkins
于 2012-05-23T03:46:10.920 回答
0

除了在 checkins 表中只有 person_id,您还可以拥有 sport_id。我想这是你的要求,对吧?签到基本上是“人”为“运动”所做的事情。

关系可能如下所示:

class Person
  has_and_belongs_to_many :sports
  ...
end

class Checkin
  belongs_to :person
  belongs_to :sport
  ...
end

class Sport
  attr_accessible :name
  has_and_belongs_to_many :people
  ...
end

现在,获得一项运动的签到将非常简单。您可以执行以下操作:

Checkin.where(sport_id: 1, person_id: 2)

如果您没有获得 ID,您可以进行连接并在 1 个查询中获取结果。

于 2012-05-23T08:15:30.500 回答