【发布时间】:2011-08-01 02:21:55
【问题描述】:
在 rails 2 中,我有一个 lib/migration_helpers.rb 文件,其中包含在数据库中设置和删除外键的方法。 通过在迁移文件中添加这些方法,在迁移文件中的 self.up 和 self.down 中可用
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)
我已经检查了在 config/application.rb 中自动加载路径设置为包含 lib。 该文件实际上是必需的,因为如果我注释掉 require 语句,那么 rails 就会抱怨丢失的“migration_helpers”文件。
我怀疑这是一个范围问题(rails 2 使用“def self.up”,rails 3 使用“def change”) 但无法想象如何解决问题(现在我只是复制了迁移文件中的代码,只是为了检查它是否做了它应该做的事情)。
弗朗切斯科
【问题讨论】:
标签: ruby-on-rails-3 rails-migrations