2013-05-11 5 views
4

Я следую за просмотром Ryan Bates Rails 4 в эпизоде ​​400 Railscasts http://railscasts.com/episodes/400-what-s-new-in-rails-4. Он устанавливает приложение для использования postgres (которое я установил) с демонстрацией hstore. Он создает эшафот, как этотundefined method `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, как вы видите ниже (а не в файл переноса, как сделал Райан)

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

@GoGoGarrett, я не совсем уверен, что на тип ответа вы ожидаете; Быстрый поиск метода столбца 'hstore' или введите следующие два файла, взятые из [Rails 3.2.19] (https://github.com/rails/rails/blob/v3.2.19/activerecord/lib/active_record/connection_adapters /postgresql_adapter.rb) и [Rails 4.2.0beta1] (https://github.com/rails/rails/blob/v4.2.0.beta1/activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb) показывает, что метод не определен в последних Rails 3. – vee

ответ

4

Проблема заключалась в том, что, хотя я установил Rails 4 gem, приложение использовало Rails 3.2 все еще, что не поддерживает hstore изначально.

+2

Для других, у которых может быть такая же ошибка, но используются рельсы 4: Еще один возможный способ получить эту же ошибку при использовании psql cli для CREATE EXTENSION hstore; а не миграция, заключается в том, чтобы забыть повторить эту команду после сброса и повторного создания db. –

Смежные вопросы