4

我正在关注 Ryan Bates 在 Railscasts http://railscasts.com/episodes/400-what-s-new-in-rails-4的第 400 集中对 Rails 4 的预览。他将应用程序设置为使用 postgres(我已经安装)和 hstore 的演示。他创造了一个这样的脚手架

rails g scaffold article name content:text published_on:date tags properties:hstore

在迁移中这样做

execute "create extension hstore"
create_table :articles do |t|
  t.string :name
  t.text :content
  t.date :published_on
  t.string :tags, array: true
  t.hstore :properties
  t.timestamps
end

但是,当我运行此迁移时,我得到了一个未定义的方法“hstore”错误。然后我进入我的测试数据库并创建了 hstore 扩展,如下所示(而不是像 Ryan 那样在迁移文件中)

psql rails4test2_development
psql (9.2.3)
Type "help" for help.

rails4test2_development=# CREATE EXTENSION hstore;

但是我在运行迁移时遇到了同样的错误。

undefined method `hstore' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0x007fa7ee7a9138>/Users/me/Sites/rails4test2/db/migrate/20130511204911_create_articles.rb:9:in `block in change'
/Users/me/Sites/rails4test2/db/migrate/20130511204911_create_articles.rb:4:in `change'

谁能帮我理解为什么这对我不起作用?

4

2 回答 2

4

问题是,即使我安装了 Rails 4 gem,应用程序仍在使用 Rails 3.2,它本身不支持hstore

于 2013-05-11T21:42:05.283 回答
0

我怀疑这是一个有许多潜在原因的问题。对我们来说,原因是 Seamless_database_pool gem。

https://github.com/bdurand/seamless_database_pool/issues/17

于 2014-12-18T16:23:24.737 回答