Rails 3数据库查询有很多通过链接

时间:2011-02-04 10:05:30

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

我有一个 帖子 表和一个 标记 表,通过 标记加入 表(Rails 3)

我想在帖子 * 名称 *字段以及任何相关标签中搜索关键字。

class Post < ActiveRecord::Base             
    has_many :taggings, :dependent => :destroy
    has_many :tags, :through => :taggings

class Tag < ActiveRecord::Base
    has_many :taggings, :dependent => :destroy
    has_many :posts, :through => :taggings

class Tagging < ActiveRecord::Base
    belongs_to :post
    belongs_to :tag



var = "word"
Post.where("name LIKE ?","%#{var}%")

这将搜索名称字段,但我不知道从哪里开始搜索标签与“var”匹配的帖子?

我是否必须针对帖子进行2次单独搜索,针对标签进行一次单独搜索,还是可以将它们合并到一个搜索中?

2 个答案:

答案 0 :(得分:3)

Post.includes(:tags).where(["posts.name LIKE (?) AND tags.tag LIKE (?)", "%#{var}%", "%#{var}%"])

答案 1 :(得分:0)

这应该至少在Rails 3中起作用

Post.joins(:tags).where('tags.name LIKE ?', "%#{var}%")