我正在跟随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'
任何人都可以帮助我理解为什么这对我不起作用?
答案 0 :(得分:4)
问题在于,即使我安装了Rails 4 gem,该应用程序仍在使用Rails 3.2,它本身不支持hstore
。
答案 1 :(得分:0)
我怀疑这是一个有许多潜在原因的问题。对我们来说,原因是seamless_database_pool gem。