我使用Ruby on Rails 4.2.3,我在users
表two_factor_secret_key
和two_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_key
和two_factor_recovery_codes
的方式查询用户表。
在此示例中,如果查询基于jvyzizqib47gp4au
,我希望返回用户,如果我使用er34rihizdlzu4fc
,我应该返回{I},因为它包含在{{1}中}}?
使用two_factor_recovery_codes
使用two_factor_secret_key
很容易找到记录,但是我不确定如何使用{{1}查询User.where(two_factor_secret_key: "jvyzizqib47gp4au")
分隔值。
请注意,我不想在activerecords中使用序列化,因为ROR应用程序不是负责在我的情况下生成数据的人。
有任何帮助吗?
答案 0 :(得分:1)
您可以使用:
user = User.where("two_factor_secret_key LIKE :search OR two_factor_recovery_codes LIKE :search", search: "%jvyzizqib47gp4au%")