【问题标题】:What is the Rails query to select records where an array field has at least N elements什么是 Rails 查询以选择数组字段至少具有 N 个元素的记录
【发布时间】:2020-12-28 12:11:10
【问题描述】:

对于使用 Postgres 的 Rails 应用程序,模型 Foo 和字段 bar 是字符串数组,我如何找到 bar 至少包含 N 个元素的记录?

所以给定:

# schema.rb
t.string "bar", default: [], array: true

我怎样才能找到 bar 包含 3 个以上元素的记录?

# wrong:
Foo.where("COUNT(bar) > ?", 3) # this is NOT valid syntax

【问题讨论】:

    标签: arrays ruby-on-rails postgresql


    【解决方案1】:

    也许这会起作用:

    Foo.where("ARRAY_LENGTH(bar, 1) > 3")

    检查official doc

    【讨论】:

    • 即使阅读“文档”也会让人感到困惑,但这很有效,非常感谢! (将第二个参数称为“int”的文档是无用的;没有任何解释。)
    • @jpw,第二个参数是我猜的维度。如果您的数组是一维的,您将传递 1,如果是 2D,则传递 2。但不确定。 :)
    猜你喜欢
    • 2023-04-03
    • 2016-05-17
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2015-02-22
    • 2017-03-15
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多