undefined method ?

Railsマイグレーションファイルを利用してデータベースにテーブルを作成するときに

マイグレーションで外部キーを設定する2通りの方法 - Katawara.*

を参考に

migration_helper.rb

module MigrationHelper
  def foreign_key(from_table, from_column, to_table)
    constraint_name = "fk_#{from_table}_#{to_table}"
    execute "alter table #{from_table} add constraint #{constraint_name} foreign key (#{from_column}) references #{to_table}(id)"
  end
end

xxxxxxxxxxxxxx_create_employees.rb

require 'migration_helper'
class CreateEmployees < ActiveRecord::Migration
  extend MigrationHelper
  def change
    create_table :employees do |t|
      t.string :employee_name
      t.string :phonetic
      t.integer :mgr_id
      t.date :birthday
      t.integer :sex
    end
    foreign_key(:employees, :mgr_id, :employees)
  end
end

ってやって rake db:migrate を実行すると foreign_key のところで undefined method って言われて migrate が abort する…。

参考 : バージョン等

追記 : extend を include に変えたら undefined method は出なくなったが、今度は SQLException が出た。自己参照してるのが拙いのか ?

追記 2 : そもそも SQLite3 に外部キー制約がない(全くないわけではないが ODBC 等による制御が必要)ので、この方法は無理だった。あきらめます。

追記 3 : SQLite では既存のテーブルの既存のカラムに対して後から制約だけを追加することは不可能と判明 orz