的记录
我有一个名为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')
这不仅干净得多,而且会快得多。