Ruby on rails 使用metawhere搜索标记

Ruby on rails 使用metawhere搜索标记,ruby-on-rails,acts-as-taggable-on,meta-where,Ruby On Rails,Acts As Taggable On,Meta Where,我正在尝试对模型及其关联的标记执行多列搜索。我正在使用metawhere,并为此充当标记。基本上我有一个带有标题和主体的模型,其中有一定数量的带有名称的标签。我一直在尝试使用metawhere设置此查询,但当我尝试加入模型的标记时,它从未返回任何结果。我有一个名为“str”的变量,用于搜索具有以下内容的Post模型 Post.where(:title.matches % '#{str}%' | :body.matches % '#{str}%' | {:tags => [:name.mat

我正在尝试对模型及其关联的标记执行多列搜索。我正在使用metawhere,并为此充当标记。基本上我有一个带有标题和主体的模型,其中有一定数量的带有名称的标签。我一直在尝试使用metawhere设置此查询,但当我尝试加入模型的标记时,它从未返回任何结果。我有一个名为“str”的变量,用于搜索具有以下内容的Post模型

Post.where(:title.matches % '#{str}%' | :body.matches % '#{str}%' | {:tags => [:name.matches % '#{str}%']}).joins(:tags)
这将生成以下sql

=> "SELECT `posts`.* FROM `posts` INNER JOIN `taggings` ON `posts`.`id` = `taggings`.`taggable_id` AND `taggings`.`taggable_type` = 'Post' INNER JOIN `tags` ON 'taggings.tagger_id IS NULL AND taggings.context = \\'tags\\'' WHERE (((`posts`.`title` LIKE '\#{str}%' OR `posts`.`body` LIKE '\#{str}%') OR `tags`.`name` LIKE '\#{str}%'))"
谁能用这个给我指出正确的方向吗?任何帮助都将不胜感激。

尝试:(假设启用了运算符重载)


你能粘贴这个查询生成的sql吗?我忘了将str变量包装在#{}中,并将生成的sql添加到我的初始问题中。出于某种原因,这会给我一个类型不匹配错误,称为“类型不匹配:字符串给定”。我忘了启用运算符重载,现在我没有发现类型不匹配的错误,但它似乎不是在搜索标记。我最终使用这个元搜索动态查找器使它工作起来…title\u或\u body\u或\u tags\u name\u或\u taggings\u tag\u name\u包含
.where((:title =~ str) | (:body =~ str) | {:tags => [:name =~ str]})