所以我设置了一个postgres服务器并让它使用hstore值。
截至目前,我有一本用
结构的表格书name:string data:hstore
我创建了一个测试样本条目:
Book.create(:name => "My First Book", :data => {'author' => 'Kevin', 'pages' => 368})
我已将数据加载到变量中:
@book = Book.where("data ? :key", :key => 'pages')
(只是为了测试,我意识到这个查询没有任何实际意义......)
我将数据打印为JSON,这样可以正常工作,找到并显示该条目。但是,我想要做的是访问,比如页面,hstore值。我做了一些研究并找到了
@book.data['pages']
但是,当我尝试运行时,我得到了
undefined method `data' for #<Book::ActiveRecord....
非常感谢任何和所有帮助!
答案 0 :(得分:2)
即使只有1个值,活动记录where
也会为您提供一个数组。
你可以做到
@book = Book.where("data ? :key", :key => 'pages')[0]
获取该记录
然后
@book.data
将按预期工作。
如果您可能获得多条记录,只需使用第一条记录即可,您也可以使用:
@book = Book.where("data ? :key", :key => 'pages').first
@book.data
或只是
@book = Book.where("data ? :key", :key => 'pages').first.data
答案 1 :(得分:1)
在摆弄后,我发现我只需要打电话:
@book[0].data