【问题标题】:Fuzzy tag matching with acts-as-taggable与可标记行为匹配的模糊标记
【发布时间】:2013-07-05 20:46:19
【问题描述】:

所以我在模型上使用 acts_as_taggable。我希望能够找到与某种 %LIKE% 匹配的标签,但我不确定如何。

我当前的代码:

@companies = Company.tagged_with(@query, :any => true)

这样做是行不通的:

tagged_with("%#{@query}%", :any => true)

有什么想法吗?

【问题讨论】:

  • 不,它不会工作。这不是acts_as_taggable 的编写方式。当您提交标签列表时,它会从您的查询字符串中生成所有标签的列表,并使用它来获取已标记的记录。它不会在标签列表中搜索与您的查询匹配的标签。

标签: ruby-on-rails-3 acts-as-taggable-on fuzzy-search


【解决方案1】:

先手动获取标签解决

  tags = Tag.where("name LIKE ?", "%#{@query}%").pluck(:name)
  @companies = Company.tagged_with(tags, :any => true)

但是,这需要我创建一个空的 Tag 模型,该模型不是由acts_as_taggable 创建的。

也许不是最好的解决方案,但它有效 :)
我宁愿做这个“hack”,然后写我自己的标签模型。

【讨论】:

    【解决方案2】:
    @companies = Company.tagged_with('query', wild: true)
    

    你应该试试。

    您还可以将 :wild => true 选项与 :any 或 :exclude 选项一起使用。它将在 SQL 中查找 %awesome% 和 %cool%

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-08
      • 2011-07-25
      • 2014-01-02
      • 2019-02-28
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2012-11-29
      相关资源
      最近更新 更多