访问rails控制器中的HSTORE数据

时间:2015-07-23 00:54:12

标签: ruby-on-rails postgresql hstore

所以我设置了一个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....

非常感谢任何和所有帮助!

2 个答案:

答案 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