run remove rails migrations generate data create column ruby-on-rails ruby-on-rails-4 database-migration

ruby-on-rails - remove - rollback migration rails



OpciĆ³n para Cascade Delete para References o On Delete (1)

En Rails 4.2, cuando se crea una tabla o se agrega una referencia a través de referencias o add_reference, ¿cómo se especifica que la clave externa se debe conectar en cascada al eliminar?

Comando para generar andamio:

rails g scaffold Child parent:references name:string

Migración resultante:

create_table :childs do |t| t.references :parent, index: true, foreign_key: true t.string :name t.timestamps null: false end


Esto debería funcionar

create_table :childs do |t| t.references :parent, index: true, foreign_key: {on_delete: :cascade} t.string :name t.timestamps null: false end

De acuerdo con las ActiveRecord::ConnectionAdapters::TableDefinition#references , si se especifica un hash en la opción foreign_key , se pasa directamente al método foreign_key .

fuente:

foreign_key(col.to_s.pluralize, foreign_key_options.is_a?(Hash) ? foreign_key_options : {}) if foreign_key_options