代码之家  ›  专栏  ›  技术社区  ›  Shreya Choubey

NoMethodError:#<ActiveRecord::迁移:0x000000033fedc0>

  •  0
  • Shreya Choubey  · 技术社区  · 7 年前

    我是Ruby on rails的新手,我正在使用omni\u auth进行facebook和google身份验证,我被困在了这里面!

    运行rake db:migrate时,显示以下错误:

    rake aborted!
    NoMethodError: undefined method `[]' for #<ActiveRecord::Migration:0x000000033fedc0>
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:664:in `block in method_missing'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:634:in `block in say_with_time'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:634:in `say_with_time'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:654:in `method_missing'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:416:in `method_missing'
    /home/ubuntu/rails_project/Devise-Omniauth/db/migrate/20180129115427_update_users.rb:1:in `<top (required)>'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `block in require'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:240:in `load_dependency'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/dependencies.rb:274:in `require'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:777:in `load_migration'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:773:in `migration'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:768:in `disable_ddl_transaction'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:1051:in `use_transaction?'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:961:in `rescue in block in migrate'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:958:in `block in migrate'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:955:in `each'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:955:in `migrate'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:823:in `up'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/migration.rb:801:in `migrate'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/tasks/database_tasks.rb:137:in `migrate'
    /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/railties/databases.rake:44:in `block (2 levels) in <top (required)>'
    /usr/local/rvm/gems/ruby-2.3.0/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
    /usr/local/rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
    /usr/local/rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'
    

    此文件导致:

    class UpdateUsers < ActiveRecord::Migration[5.0]
      def change
        add_column(:users, :provider, :string, limit: 50, null: false, default: '')
        add_column(:users, :uid, :string, limit: 500, null: false, default: '')
      end
    end
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Hardik Upadhyay    7 年前

    您似乎正在使用rails 4.2。

    版本化迁移只在rails 5中起作用

    只需删除 [5.0] 从您的迁移中,它将很好地工作。

    例如:

    class UpdateUsers < ActiveRecord::Migration
      def change
        add_column(:users, :provider, :string, limit: 50, null: false, default: '')
        add_column(:users, :uid, :string, limit: 500, null: false, default: '')
      end
    end