访问 rails 控制器中的 HSTORE 数据

Accessing HSTORE data in rails controller

所以我设置了一个 postgres 服务器并让它使用 hstore 值。

截至目前,我有 table 本书,结构为

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....

非常感谢任何帮助!

折腾后发现只需要调用:

@book[0].data

即使只有 1 个值,Active Record 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