【问题标题】:How to query comma separated values in Postgres string field? ROR / ActiveRecord如何在 Postgres 字符串字段中查询逗号分隔值? ROR / ActiveRecord
【发布时间】:2017-01-23 22:21:39
【问题描述】:

我正在使用 Ruby on Rails 4.2.3,我在 userstwo_factor_secret_keytwo_factor_recovery_codes 中有两个字符串字段。第一个有一个字符串标记,而第二个有十个由; 分隔的标记。它们看起来像:

[62] pry(main)> ap User.last
  User Load (6.0ms)  SELECT  "users".* FROM "users"   ORDER BY "users"."id" DESC LIMIT 1
#<User:0x007f8b3b009ad8> {
                              :id => 1,
                           :email => "test@me.com",
               ......
               ......
           :two_factor_secret_key => "jvyzizqib47gp4au",
       :two_factor_recovery_codes => "jgbcfjzh3lhpm6dv;er34rihizdlzu4fc;u32wwdmxl2dnxslv;liqcswrhjyfrpbkk;ttuezeszxnwzjent;4noxzmo4rg5jed5w;eynndg2gy5yzrdi3;h275valgjiiee7r3;f6m5xwujmtnucshe;tvhzxibvj4ikulyg"
}

如何以搜索two_factor_secret_keytwo_factor_recovery_codes 的方式查询用户表。

在这个例子中,如果查询基于jvyzizqib47gp4au,我想返回用户,如果我使用er34rihizdlzu4fc,我应该得到正确,因为它包含在two_factor_recovery_codes中?

使用two_factor_secret_key 和类似User.where(two_factor_secret_key: "jvyzizqib47gp4au") 的内容很容易找到记录,但是我不确定如何使用; 分隔值查询two_factor_recovery_codes

请注意,我不想对 activerecords 使用序列化,因为在我的案例中,ROR 应用程序不是负责生成数据的人。

有什么帮助吗?

【问题讨论】:

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


    【解决方案1】:

    你可以使用:

    user = User.where("two_factor_secret_key LIKE :search OR two_factor_recovery_codes LIKE :search", search: "%jvyzizqib47gp4au%")
    

    【讨论】:

    • 感谢您愿意帮助@Shannon。我的问题是two_factor_recovery_codes 而不是two_factor_secret_key。我应该如何在; 分隔字符串列表中搜索
    • 再次感谢香农。不是真的没有。尝试将搜索从 jvyzizqib47gp4au 更改为 er34rihizdlzu4fctwo_factor_recovery_codes 中的第二个值),它不会找到记录。
    • 好的,我认为这很接近。请更新您的答案,因为搜索应该类似于 search: "%jvyzizqib47gp4au%" 我猜
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多