我在嘗試將舊的1.2.6 Rails應用程序升級到2.3.8,並且遇到了一些遷移問題。也就是說,如果我在遷移中有類似ModelName.create(:foo =>「bar」)的內容,遷移將無法完成。它不會遇到無限循環或任何事情。它只是拒絕完成該遷移。什麼會導致此遷移掛起?
下面是一些示例代碼。
這工作:
class CreateNewsArticles < ActiveRecord::Migration
def self.up
create_table :news_articles, :force => true do |t|
t.string "name"
t.string "image"
t.text "body"
t.boolean "featured", :default => "0"
t.integer "position"
t.timestamps
end
# Section.create(:name => 'News Articles', :controller => 'news_articles', :description => 'Add, edit, and delete news articles.')
end
def self.down
drop_table :news_articles
Section.find_by_name('News Articles').destroy
end
end
取消對Section.create(...)表示遷移無法完成。
下面是從耙分貝輸出:遷移--trace:
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
== CreateNewsArticles: migrating =============================================
-- create_table(:news_articles, {:force=>true})
-> 0.0531s
而且註釋掉Section.create
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
== CreateNewsArticles: migrating =============================================
-- create_table(:news_articles, {:force=>true})
-> 0.0479s
== CreateNewsArticles: migrated (0.0481s) ====================================
** Invoke db:schema:dump (first_time)
** Invoke environment
** Execute db:schema:dump
後,我已經試過這另一臺計算機上,並且它的工作原理。相同版本的rake,同一版本的ruby和rails被凍結。
耙--version:rake, version 0.8.7
,紅寶石-v:ruby 1.8.6 (2010-02-05 patchlevel 399) [i686-darwin10.3.0]
,導軌-v:Rails 2.3.8
人有什麼想法?
你願意解釋爲何這已經解決了這個問題,或是您發現該解決方案! – 2012-02-18 13:53:10