J'essaie d'effectuer une recherche sur plusieurs colonnes sur un modèle et ses balises associées. J'utilise metawhere et acts-as-taggable-on pour ça. Fondamentalement, j'ai un modèle avec un titre et un corps qui a une certaine quantité de tags avec des noms. J'ai essayé de définir cette requête avec metawhere mais elle ne renvoie jamais de résultats lorsque j'essaie de rejoindre les tags d'un modèle. J'ai une variable nommée « str » qui est utilisé pour rechercher un modèle post avec les éléments suivants ...Recherche de balises avec metawhere
Post.where(:title.matches % '#{str}%' | :body.matches % '#{str}%' | {:tags => [:name.matches % '#{str}%']}).joins(:tags)
qui génère la requête SQL suivante ...
=> "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}%'))"
Quelqu'un peut-il me diriger dans la bonne direction avec ça? Toute aide serait grandement appréciée.
Pouvez-vous coller dans le sql qui est générée à partir de cette requête? – idlefingers
J'ai oublié d'enrouler la variable str dans # {} et j'ai ajouté le sql généré à ma question initiale. – Raj