Ruby on Rails - продолжайте получать сообщение об ошибке при попытке запустить "rake db:migrate"

Я новичок в изучении Ruby on Rails, и когда я запускаю "rake db: migrate" в командной строке, я получаю следующую ошибку:

грабли прерваны! SyntaxError: >/Users/user_name/Sites/simple_cms/db/migrate/20140423221836_alter_users.rb:15: синтаксис> ошибка, неожиданное ':', ожидание ')' ...dmin_users", "email",:string:default => "",:null => false) ... ^

Задачи: TOP => db:migrate (посмотреть полную трассировку, запустив задачу с --trace)**

Вот мой код:

class AlterUsers < ActiveRecord::Migration

  def up
    rename_table("users", "admin_users")
    add_column("admin_users", "username", :string, :limit => 25, :after => "email")
    change_column("admin_users", "email", :string, :limit => 100)
    rename_column("admin_users", "password", "hashed_password")
    puts "*** Adding an index is next ***"
    add_index("admin_users", "username")
  end

  def down
    remove_index("admin_users", "username")
    rename_column("admin_users", "hashed_password", "password")
    change_column("admin_users", "email", :string :default => "", :null => false)
    remove_column("admin_users", "username")
    rename_table("admin_users", "users")
  end

end

Я продолжаю проверять и перепроверять свой код, но не могу найти решение... Может ли кто-нибудь с лучшими глазами, чем я, взглянуть? Спасибо!

1 ответ

Решение

На 3-й строке down метод, вы пропустили запятую

change_column("admin_users", "email", :string :default => "", :null => false)

                                             ^ 
                                           ## missing comma

вот почему вы получаете ошибку как unexpected ':', expecting ')' ...dmin_users", "email", :string :default => "", :null => false)

Просто добавьте запятую между :string а также :default и беги rake db:migrate,

Другие вопросы по тегам