我的导轨设置如下:
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
我希望在某一天获得人员的所有签到,但只有在他们拥有HABTM记录的情况下才能获得“棒球”的name
。我怎样才能做到这一点?
答案 0 :(得分:0)
这样的事情有用吗? (可能需要更改属性名称)
Sport.where(:name => "Baseball").people.checkins
答案 1 :(得分:0)
您也可以拥有sport_id,而不仅仅是在checkins表中使用person_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次查询中获得结果。