3
在rails 2中,我有一個lib/migration_helpers.rb文件,其中包含用於在數據庫中設置和刪除外鍵的方法。 這些方法是在遷移文件self.up和self.down可在遷移文件訪問rails 3遷移中的自定義幫助器方法
require 'migration_helpers'
在頂部加入,並
extend MigrationHelpers
類語句後立即
。
在Rails 3這是行不通的,如果我嘗試使用從migration_helpers.rb以下錯誤set_foreign_key方法來運行遷移拋出:
== AddFkToArticles: migrating ================================================
-- set_foreign_key("articles", "book_id", "books")
rake aborted!
An error has occurred, this and all later migrations canceled:
undefined method `set_foreign_key' for #<AddFkToArticles:0x000001034a1f38>
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
我已經檢查,在配置/ application.rb中自動加載路徑被設置爲包含lib。 該文件是有效的要求,因爲如果我註釋掉require語句,那麼rails會抱怨缺少'migration_helpers'文件。我想這是一個範圍問題(導軌2使用「def self.up」,導軌3使用「def change」) 但無法想象如何解決問題(現在我簡單地複製遷移中的代碼文件,只是爲了檢查它應該做什麼)。
弗朗西斯
我不得不將需要File.expand_path('../../../ lib/test_helper',__FILE__)添加到我的遷移文件的頂部。沒有它,它將無法工作。 – baash05