在rails中查找具有哈希值的记录



我有一个名为posts 的表

create_table "posts", force: :cascade do |t|
   t.text     "values"
end

我的记录值是

#<Post id: 1, values: {"p1"=>"1", "p2"=>"xyz"}>
#<Post id: 2, values: {"p1"=>"1", "p2"=>"abc"}>

我想从帖子中找到values[:p2] = "abc"

的记录

要回答您的问题,最好使用LIKE查询来获取包含子字符串的列:

Posts.where("values like %"p2"=>"abc"%")

上面的查询尚未经过测试,但应该会得到包含"p2"=>"abc"的行。

但正如我在评论中提到的,我不推荐此解决方案。这样配置你的表会更好:

create_table "posts", force: :cascade do |t|
  t.text     "p1"
  t.text     "p2"
end

然后您的新查询变成

Posts.where(p2: 'abc')

这不仅干净得多,而且会快得多。

最新更新