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特定の日の People のすべてのチェックインを取得したいのですが、"Baseball"の HABTM レコードがある場所だけを取得したいと考えています。どうすればこれを達成できますか?

4

2 に答える 2

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

これで、Sport のチェックインを取得するのは非常に簡単になります。次のようなことができます:

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

ID を取得できない場合は、結合を実行して 1 つのクエリで結果を取得できます。

于 2012-05-23T08:15:30.500 に答える
0

このようなものは機能しますか?(属性名は変更する必要がある場合があります)

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