我有一个 帖子 表和一个 标记 表,通过 标记加入 表(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次单独搜索,针对标签进行一次单独搜索,还是可以将它们合并到一个搜索中?
答案 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}%")