habtm なテーブルで,相手のカラムの値でselectしたい
DBのテーブルが2つあるとする。なんでもいいけど,例えばusersとbookmarks。多対多対応するので,交差テーブルとしてusers_bookmarksを持つ。もちろんUserとBookmarkモデルにはhas_and_belongs_to_manyが指定してある。このようなとき「1週間以内に作成したブックマークを持つユーザ」を取得するにはどうしたらいいのだろう。つまり交差テーブルの向こうにあるカラムに対して条件を付けられるかってことなんだけど。
何も考えないと,
bookmarks = Bookmark.find(:all, :conditions=>['created_on>?',1.week.ago.to_date]) users = bookmarks.map{|b|b.users}
こんな感じ? 二行目で効率悪いことが起きそう… :includeとか効くのだろうか。