簡體   English   中英

Rake Migrate錯誤“參數數量錯誤”

[英]Rake Migrate error “wrong number of arguments”

我正在嘗試將列添加到我擁有的模型中(線索)。我已經在線閱讀了這與我的遷移文件有關。 這是我的遷移文件:

class Addboolstoclue < ActiveRecord::Migration
  def self.up
   add_column :clue do |t|
    t.boolean :clue1 
    t.boolean :clue2 
    t.boolean :clue3 
    t.boolean :clue4 
    t.boolean :clue5 
    t.boolean :clue6 
    t.boolean :clue7 
    t.boolean :clue8 
    t.boolean :clue9 
    t.boolean :clue10 
    t.boolean :clue11 
    t.boolean :clue12 
    t.boolean :clue13 
    t.boolean :clue14 
    t.boolean :clue15 
    t.boolean :done 
    t.string :user_id
    end
  end
end

當我運行遷移時,我的終端會出現此錯誤:

rake db:migrate
== 20150418012429 Addboolstoclue: migrating ===================================
-- add_column(:clue)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

wrong number of arguments (1 for 3..4)/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:452:in `add_column'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:649:in `block in method_missing'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:621:in `block in say_with_time'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:621:in `say_with_time'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:641:in `method_missing'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:406:in `method_missing'
/Users/coleschiffer/Code/rp/protected-beyond-7706/db/migrate/20150418012429_addboolstoclue.rb:3:in `up'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:558:in `up'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:598:in `exec_migration'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:579:in `block (2 levels) in migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:578:in `block in migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `with_connection'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:577:in `migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:752:in `migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:992:in `block in execute_migration_in_transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:1038:in `block in ddl_transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:211:in `block in transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:219:in `within_new_transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/connection_adapters/abstract/database_statements.rb:211:in `transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/transactions.rb:208:in `transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:1038:in `ddl_transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:991:in `execute_migration_in_transaction'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:953:in `block in migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:949:in `each'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:949:in `migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:807:in `up'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/migration.rb:785:in `migrate'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/gems/activerecord-4.1.0/lib/active_record/railties/databases.rake:34:in `block (2 levels) in <top (required)>'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `eval'
/Users/coleschiffer/.rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:migrate

謝謝您的幫助!

當您嘗試一次添加多個列時,請嘗試使用change_table而不是add_column:

class Addboolstoclue < ActiveRecord::Migration
  def change
   change_table :clue do |t|
      t.boolean :clue1 
      t.boolean :clue2 
      t.boolean :clue3 
      t.boolean :clue4 
      t.boolean :clue5 
      t.boolean :clue6 
      t.boolean :clue7 
      t.boolean :clue8 
      t.boolean :clue9 
      t.boolean :clue10 
      t.boolean :clue11 
      t.boolean :clue12 
      t.boolean :clue13 
      t.boolean :clue14 
      t.boolean :clue15 
      t.boolean :done 
      t.string :user_id
    end
  end
end

add_column通常一次只完成一列,而不是分塊進行:

add_column :clue, :clue1, :boolean
add_column :clue, :clue2, :boolean
...

再者,您將需要在self.change方法中執行此操作,而不是編寫上下方法。 Rails指南的這一部分將對其進行更多討論:

http://guides.rubyonrails.org/active_record_migrations.html#creating-a-standalone-migration

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM