加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 )

这在我的测试中按预期工作.我正在测试三个记录.一个在标题中有搜索词,另一个只有标签,第三个有标题和标签,所以它不应该返回重复项.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读