【问题标题】:Find exact substring in Rails activerecord searching在 Rails activerecord 搜索中查找确切的子字符串
【发布时间】:2018-10-22 00:59:39
【问题描述】:

联系人有一个整数字符串字段,如"1,10,14,5,15,2,5"。 例如我有 3 个联系人:

contact1 has `"1,10,111,2,5"` contact1 has `"10,14,5,15,2,5"` contact1 has `"10,14,5"`

当我尝试搜索“1”时,它会返回contact1,当我搜索2时,它会返回contact1和contact2

我已经尝试过这段代码:

contacts = Contact.all contacts = contacts.where("tag_ids LIKE ?", "%#{tag}%")

但在这段代码中,如果我尝试找出 1,它会返回所有 3 个联系人。

【问题讨论】:

  • 这三个都包含“1”,因此它的行为与您编写的行为完全相同!
  • 我知道!这就是我在此处发布的原因,以便我可以更改现有查询!
  • 您可能应该将包含您的 tag_ids 作为字符串的数据字段迁移并正确创建关系。好像您已经有一个 Tag 模型,所以您只需要一个联系人和标签的关联表并添加 has_and_belongs_to_many 关系。在您的迁移中,只需在删除之前将该字段中的所有这些 ID 移动到关联表中,您应该可以更轻松地根据标签 ID 查找联系人
  • 最终我做了你提到的。它解决了问题。

标签: ruby-on-rails postgresql search activerecord ruby-on-rails-5.1


【解决方案1】:

试试这个:

` 联系人 = contacts.where("tag_ids LIKE ?", "#{tag}")

`

【讨论】:

    猜你喜欢
    • 2015-12-25
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2020-02-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多