0

內滑軌安裝引擎I生成的模型:導軌安裝發動機:在遷移插入數據行

rails g model Sources domain:string source_alias:string is_social:boolean is_organic:boolean organic_query_param:string 

這裏是遷移文件(20131220160128_create_sourcebuster_sources.rb

class CreateSourcebusterSources < ActiveRecord::Migration 
    def change 
    create_table :sourcebuster_sources do |t| 
     t.string :domain, null: false 
     t.string :source_alias 
     t.boolean :is_social, default: false 
     t.boolean :is_organic, default: false 
     t.string :organic_query_param 

     t.timestamps 
    end 
    add_index :sourcebuster_sources, :domain, unique: true 
    add_index :sourcebuster_sources, :is_social 
    add_index :sourcebuster_sources, :is_organic 

    Sourcebuster::Source.create domain: "yahoo.com", 
           source_alias: "yahoo.com", 
           is_social: false, 
           is_organic: true, 
           organic_query_param: "p" 
    end 
end 

其複製到虛擬應用程序:

rake sourcebuster:install:migrations 

不同名稱的遷移文件 - 20131220164445_create_sourcebuster_sources.sourcebuster.rb - 但內容是s如上所述。

好吧,bundle exec rake db:migrate

,並試圖將數據插入一行時,它給了我一個錯誤,:

== CreateSourcebusterSources: migrating ====================================== 
-- create_table(:sourcebuster_sources) 
-> 0.0364s 
-- add_index(:sourcebuster_sources, :domain, {:unique=>true}) 
-> 0.0066s 
-- add_index(:sourcebuster_sources, :is_social) 
    -> 0.0069s 
-- add_index(:sourcebuster_sources, :is_organic) 
    -> 0.0046s 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

uninitialized constant Sourcebuster::Source/Users/Alex/Ruby/sourcebuster/test/dummy/db/migrate/20131220164445_create_sourcebuster_sources.sourcebuster.rb:17:in `change' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:571:in `exec_migration' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:555:in `block (2 levels) in migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:554:in `block in migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `with_connection' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:553:in `migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:709:in `migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:959:in `block in execute_migration_in_transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:1005:in `block in ddl_transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `block in transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:210:in `within_new_transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:209:in `transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:1005:in `ddl_transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:958:in `execute_migration_in_transaction' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:920:in `block in migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:916:in `each' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:916:in `migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:764:in `up' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/migration.rb:742:in `migrate' 
/Users/Alex/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>' 
/Users/Alex/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/Alex/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `<main>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

爲什麼插入失敗?

+0

我認爲這是'軌G型SourceS' ... –

回答

0

嘗試將這種方法

class CreateSourcebusterSources < ActiveRecord::Migration 
    def migrate(direction) 
     super 
     # Create a default Sourcebuster 
     Sourcebuster::Source.create! domain: "yahoo.com", 
          source_alias: "yahoo.com", 
          is_social: false, 
          is_organic: true, 
          organic_query_param: "p" if direction == :up 
    end 
#def change 
    ... 
end 
+0

我用複數,時'軌G型SourceS'。 –