2011-02-09 83 views
1

我試圖在模型上執行多列搜索,並且它是關聯的標籤。我正在使用metawhere併爲此作爲標籤。基本上我有一個標題和正文的模型,它有一定數量的帶有名稱的標籤。我一直試圖用metawhere設置這個查詢,但是當我嘗試加入模型的標籤時,它永遠不會返回任何結果。我有一個變量命名的活動正用於搜索與以下內容的帖子模式「海峽」 ......使用metawhere搜索標籤

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}%'))" 

任何人都可以點我在正確的方向與此?任何幫助將不勝感激。

+0

你能在從該查詢生成的SQL粘貼? – idlefingers 2011-02-09 09:59:20

+0

我忘了在#{}中包裝str變量,並將生成的sql添加到我最初的問題中。 – Raj 2011-02-09 18:49:39

回答

0

嘗試:(假設運算符重載使能)

.where((:title =~ str) | (:body =~ str) | {:tags => [:name =~ str]})