2016-05-25 73 views
6

Rails 4.2.3 ve PostGres veritabanını kullanıyorum. Ben bir on-silme kaskad kısıtlamasını için benim yabancı tuşlarından birine güncelleştirmek için bir geçiş yazmak istiyorum, bu yüzdenBir yabancı anahtarı, bir on-delete kaskad kısıtlamasıyla güncelleyen bir Rails geçişini nasıl oluşturabilirim?

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 

oluşturulan ama göç çalıştırdığınızda aşağıda hatayı alıyorum ...

$ 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' 

Yabancı anahtarın güncellenmesi için geçişimi nasıl yazmalıyım? Bu biriyle

cevap

6
Bu hat değiştirmek gerek

,

add_foreign_key :my_object_times, :my_objects, on_delete: cascade 

:

add_foreign_key :my_object_times, :my_objects, on_delete: :cascade 

basit fark cascade bir sembol (:cascade) ya da bir dize ('cascade') olması gerektiğidir. Bu yardımcı olur

Umut.

Saygılarımızla,