レール2には、dbの外部キーを設定および削除するためのメソッドを持つlib/migration_helpers.rbファイルがありました。 これらのメソッドはすぐにクラス文の後レール3の移行でカスタムヘルパーメソッドにアクセス
extend MigrationHelpers
上部に
require 'migration_helpers'
移行ファイルに追加することで、移行ファイルにするself.upとするself.downで利用できた、と 。レール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ファイルを嫌うからです。
これはスコープの問題であると思われます(レール2は "def self.up"を使用し、レール3は "def change"を使用します)。 しかし、問題の解決方法は想像できません。ファイル、それが何をすべきかを確認する)。
フランチェスコ
マイグレーションファイルの先頭にFile.expand_path( '../../../ lib/test_helper'、__FILE__)を追加する必要がありました。それがなければ、うまくいかないでしょう。 – baash05