0

私はレールで作業しており、habtm 関係を持つ 2 つのテーブル Post と Tags があります。

次の文が機能します。

@posts = Post.find(:all, :include=>:tags, :conditions => ['tags.term LIKE ? OR tags.term LIKE ?', "%Barcelona%", "%restaurante%" ])

また

@posts = Post.find(:all, :include=>:tags, :conditions => ['tags.term  in (?)', ['Barcelona','restaurante'] ])

しかし、これはAND条件付きで機能しません。

@posts = Post.find(:all, :include=>:tags, :conditions => ['tags.term LIKE ? AND tags.term LIKE ?', "%Barcelona%", "%restaurante%" ])

tags.term「Barcelona and restaurante」の両方を含むすべての投稿を取得するための文を知りたいです。

前もって感謝します

エミリオ

4

1 に答える 1

0

私は自分自身に反応し、私のために働き、希望は誰かを助けることができます:

@posts = Post.find_by_sql("select * from posts p where (select count(distinct t.id) from posts_tags pt left join tags t on pt.tag_id=t.id where t.term in ('Barcelona', 'restaurante ') および pt.post_id = p.id) >= 2")

于 2012-08-16T10:19:09.070 に答える