meta_search的文档好像没有提到类似这种需求的解决方法,GOOGLE之:
找到如下解决方法
http://stackoverflow.com/questions/5766427/combining-meta-search-with-acts-as-taggable-on
Post.metasearch({:title_or_tag_taggings_tag_name_contains => params[:search]})<%= f.select :time_taggings_tag_name_contains, [["请选择",""]]+Tag::TIMES %>
在console中测试能达到效果,但是生成的SQL,有些复杂
ruby-1.9.2-p180 :004 > Solution.metasearch({:time_taggings_tag_name_contains => "XXX"})
Solution Load (6.6ms) SELECT `solutions`.* FROM `solutions` LEFT OUTER JOIN `taggings` ON `taggings`.`taggable_id` = `solutions`.`id` AND taggings.tagger_id IS NULL AND taggings.context = 'times' AND `taggings`.`taggable_type` = 'Solution' LEFT OUTER JOIN `tags` ON `tags`.`id` = `taggings`.`tag_id` WHERE (`tags`.`name` LIKE '%XXX%')
有个问题:
我发布到服务器后测试报错:
Mysql2::Error: Unknown column 'tags.id' in 'on clause': SELECT COUNT(DISTINCT `solutions`….......我比较了一下本机与服务器的MySQL版本:
本机:
mysql5 Ver 14.14 Distrib 5.1.53, for apple-darwin10.5.0 (i386) using readline 6.1服务器:
mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1不知道是不是因为服务器版本的差异导致的这个问题。