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

时间:2016-07-21 13:43:46

标签: ruby-on-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"

的帖子中找到记录

1 个答案:

答案 0 :(得分:1)

要回答您的问题,最好的办法是使用LIKE query获取包含子字符串的列:

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')

这不仅更清洁,而且会更快。