6

私はRails 4.2.3とPostGresデータベースを使用しています。私は上のカスケード削除制約を持つことが、私の外部キーのいずれかを更新するために、移行を書きたいので、私はon-deleteカスケード制約で外部キーを更新するRails移行を作成するにはどうすればよいですか?

class UpdateForeignKeyAddOnDeleteConstraint < ActiveRecord::Migration 
    def change 
    remove_foreign_key :my_object_times, :my_objects 
    add_foreign_key :my_object_times, :my_objects, on_delete: cascade 
    end 
end 

を作成しましたが、私は、マイグレーションを実行したとき、私は以下のエラーを取得...

$ rake db:migrate 
== 20160525203028 UpdateForeignKeyAddOnDeleteConstraint: migrating ============ 
-- remove_foreign_key(:my_object_times, :my_objects) 
    -> 0.0454s 
-- cascade() 
rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

undefined local variable or method `cascade' for #<UpdateForeignKeyAddOnDeleteConstraint:0x007f82f2c71998> 
/Users/davea/.rvm/gems/[email protected]/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:664:in `block in method_missing' 
/Users/davea/.rvm/gems/[email protected]/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:634:in `block in say_with_time' 
/Users/davea/.rvm/gems/[email protected]/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:634:in `say_with_time' 
/Users/davea/.rvm/gems/[email protected]/gems/activerecord-4.2.5.1/lib/active_record/migration.rb:654:in `method_missing' 

外部キーを更新するためにマイグレーションを作成する方法を教えてください。あなたはこの1つで

add_foreign_key :my_object_times, :my_objects, on_delete: cascade 

、この行を変更する必要が

答えて

6

add_foreign_key :my_object_times, :my_objects, on_delete: :cascade 

シンプルな違いはcascadeがシンボル(:cascade)または文字列('cascade')でなければならないことです。

これが役に立ちます。

よろしくお願いします。

関連する問題