【问题标题】:How to query for the intersection of two arrays in Rails?如何在 Rails 中查询两个数组的交集?
【发布时间】:2023-03-06 05:27:02
【问题描述】:

我想按照以下方式做一些事情:colleges.where("rotc.join(', ') & ?", rotc)。每个学院都有一个rotc 字符串属性(例如"Air Force, Army, Navy"),我想看看它是否与用户过滤的 rotc 程序相交。

这个screenshot 显示了我正在尝试构建的内容。

我遇到的一个问题是我不能在这里使用join 方法。另一个问题是我认为我也不能使用& 方法。

我该如何执行这个查询?

【问题讨论】:

    标签: sql ruby-on-rails rails-activerecord


    【解决方案1】:

    假设您的表单设置为返回 params[:rotc] 并带有一组检查值,例如 ["Air Force", "Navy"],我认为您可以这样做:

    if params[:rotc] = []
      colleges = College.none #or maybe College.where("rotc = ''") 
    else
      colleges = College.all
      params[:rotc].each |rotc| do
        colleges = colleges.where("rotc LIKE ?, "%#{rotc}%")
      end
    end
    

    可能有一种更清洁的方法,但也许这会给你一些想法。

    【讨论】:

    • 行得通,谢谢!我稍微更改了代码,但关键是 1) .each 循环和 2) 带有 %s 的 LIKE 运算符。
    • 您可能已经知道这一点,但 each 块中的 College.where[..] 应该是 colleges.where[..] - 为后代编辑。
    猜你喜欢
    • 2022-01-13
    • 2011-05-23
    • 2015-07-26
    • 1970-01-01
    • 2012-05-12
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多