2015-09-30 18 views
1

我有遷移20150930051523_create_objects.rb:耙分貝:遷移StandardError的原因 - 未初始化的常量CreateObjects:對象

class CreateObjects < ActiveRecord::Migration 
def change 
    create_table :objects do |t| 
    t.text :name 
    t.timestamps null: false 
    end 

    Object.create :name => "A" 
    Object.create :name => "B" 
    Object.create :name => "C" 

    end 
end 
 
$ rake:db migrate --trace cause output: 
** Invoke db:migrate (first_time) 
** Invoke db:environment (first_time) 
** Execute db:environment 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:migrate 
== 20150930051523 CreateObjects: migrating ==================================== 
-- create_table(:objects) 
    -> 0.0010s 
rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

uninitialized constant CreateObjects::Object/db/migrate/20150930051523_create_objects.rb:8:in `change' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:605:in `exec_migration' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:589:in `block (2 levels) in migrate' 
/usr/lib/ruby/2.1.0/benchmark.rb:279:in `measure' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:588:in `block in migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in `with_connection' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:587:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:765:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:995:in `block in execute_migration_in_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:1041:in `block in ddl_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/transactions.rb:220:in `transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:1041:in `ddl_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:994:in `execute_migration_in_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:956:in `block in migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in `each' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in `up' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:798:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:137:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:44:in `block (2 levels) in ' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain' 
/usr/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/bin/rake:33:in `' 
/usr/local/bin/rake:23:in `load' 
/usr/local/bin/rake:23:in `' 
NameError: uninitialized constant CreateObjects::Object/db/migrate/20150930051523_create_barbers.rb:8:in `change' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:605:in `exec_migration' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:589:in `block (2 levels) in migrate' 
/usr/lib/ruby/2.1.0/benchmark.rb:279:in `measure' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:588:in `block in migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in `with_connection' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:587:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:765:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:995:in `block in execute_migration_in_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:1041:in `block in ddl_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/transactions.rb:220:in `transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:1041:in `ddl_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:994:in `execute_migration_in_transaction' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:956:in `block in migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in `each' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in `up' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:798:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:137:in `migrate' 
/var/lib/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:44:in `block (2 levels) in ' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain' 
/usr/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run' 
/var/lib/gems/2.1.0/gems/rake-10.4.2/bin/rake:33:in `' 
/usr/local/bin/rake:23:in `load' 
/usr/local/bin/rake:23:in `' 
Tasks: TOP => db:migrate 

錯誤出現在的Object.create ...階段,有什麼不好?

回答

0

該問題已通過設置pg gem來解決,該pg gem拉取了其他寶石和包(特別是postgresql-server-dev-all)的捆綁包。安裝完成後,命令rake db:migrate可以正常工作。

0

更新:在一個評論中指出,實際的代碼不包含「對象」,因此這個答案是基於錯誤的例子。

Object是一個壞的名字,用於(無框架)Model類,因爲它已經被Ruby定義了。

您要求創建的Object可能不是您在模型源中定義的Object類。

我假設你運行rails。從您的遷移中刪除Object.create行。運行它,它應該工作正常。然後,撥打rails console,您最終在現場會話。在這裏你可以玩你的代碼,例如請致電Object.createObject.where{id: 1}等我假設你會得到相同的錯誤。

因此,作爲解決方案,請將您的Object重命名爲其他內容,例如Class,然後查看它是否有效。

好吧,那是一個笑話,當然Class對模型類來說也是一個非常糟糕的名字:)。嘗試找到更有意義的東西。

+0

對象是一個模板字,我用它來代替理髮師和理髮師: class CreateBarbers 「傑西Pinkman」 Barber.create:名稱=> 「沃爾特·白」 Barber.create:名稱=>「格斯Fring「 結束 結束 – irishfromua

+0

然後請在您的問題中提供實際的代碼...! – Felix

+0

謝謝Felix,問題是通過設置pg gem解決的,後者將其他寶石和包(特別是postgresql-server-dev-all)捆綁在一起。安裝完成後,命令rake db:migrate可以正常工作。 – irishfromua