Поиск тегов с мета - PullRequest
       8

Поиск тегов с мета

1 голос
/ 09 февраля 2011

Я пытаюсь выполнить многоколонный поиск по модели и связанным с ней тегам. Я использую 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}%'))"

Кто-нибудь может указать мне правильное направление с этим? Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 февраля 2011

Попробуйте: (при условии, что перегрузки оператора разрешены)

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