ruby-on-rails-3 – 使用属性进行简单搜索,AND acts_as_taggable
发布时间:2020-12-17 02:17:08 所属栏目:百科 来源:网络整理
导读:我正在构建一个应用程序,我想在一次搜索中使用简单搜索来搜索对象的标题和AND标记(使用acts_as_taggable_on) 我能够构建其中任何一个,但不能同时构建两个,并且在我的智慧结束时试图弄清楚它. 要使用标签进行搜索,我使用: @post = Post.tagged_with(params[:
我正在构建一个应用程序,我想在一次搜索中使用简单搜索来搜索对象的标题和AND标记(使用acts_as_taggable_on)
我能够构建其中任何一个,但不能同时构建两个,并且在我的智慧结束时试图弄清楚它. 要使用标签进行搜索,我使用: @post = Post.tagged_with(params[:search]) 要搜索对象,我使用: @post = Post.search(params[:search]) 我在Post模型中编写了一个名为search的方法,如下所示: def self.search(search) if search where('question LIKE ?',"%#{search}%") else scoped end end 知道如何组合这两个查询吗?到目前为止的任何尝试都没有成功,主要是因为我的Post模型中没有“标签”列等. 解决方法
我想出来并在我的解决方案中测试它,我自己编写了连接,所以它不像我想的那么干净,所以如果有人有更好的解决方案,我仍然喜欢看到它.这是我想出的:
q = "%#{search}%" Post.select('distinct posts.*').joins("LEFT JOIN taggings on posts.id = taggings.taggable_id") .joins("LEFT JOIN tags on tags.id = taggings.tag_id") .where('title LIKE ? OR tags.name LIKE ?',q,q ) 这在我的测试中按预期工作.我正在测试三个记录.一个在标题中有搜索词,另一个只有标签,第三个有标题和标签,所以它不应该返回重复项. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |