【问题标题】:Rails query for 'comma separated string' in arrayRails 查询数组中的“逗号分隔字符串”
【发布时间】:2019-10-29 21:14:25
【问题描述】:

这是用于文章的 Rails 站点。文章的标签存储在 4 个不同的字段中 - technology_tag、sub_segment_tag 和更多字段。 这些字段中的每一个都存储一个逗号分隔的字符串。

我有一个方法通过组合 4 个逗号分隔的字符串标签字段(下面的@tags)返回给定文章的标签数组(在显示页面上)。

在文章显示页面上,我有一个查询来获取相关文章,就像这样 -

Article.regular.published.where('date > ?', '2018-01-01').order(date: :desc).where('sub_segment_tag IN (?)', @tags).limit( 3)

例如:- 如果当前查看的文章有- @tags = [“钱包”]

仅匹配 sub_segment_tag 中只有一个值的文章,即“钱包”。 我希望它也匹配具有 sub_segment_tag = "Wallet,Banking" 和其他值的文章。

如果可以,请告诉我。

谢谢

【问题讨论】:

  • 我建议阅读How to ask,尤其是“帮助他人重现问题”部分.. 理想情况下,我们需要有表格结构、示例数据和预期结果,另见@ 987654322@
  • in 需要一个由逗号分隔的值列表,而不是恰好有一个逗号分隔的字符串作为值的单个值。两者可能看起来相似,但并不相同。

标签: mysql ruby-on-rails-4 activerecord


【解决方案1】:

直接使用like运算符进行查询。因为存储在列中的值是一种字符串格式。下面将返回所有具有“钱包”的 sub_segment_tag。

Article.regular.published.where('date > ?', '2018-01-01').order(date: :desc).where("sub_segment_tag LIKE (?)", '%Wallet%').limit(3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    相关资源
    最近更新 更多