Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用rails迁移生成器添加外键_Ruby On Rails_Activerecord_Ruby On Rails 4.2 - Fatal编程技术网

Ruby on rails 使用rails迁移生成器添加外键

Ruby on rails 使用rails迁移生成器添加外键,ruby-on-rails,activerecord,ruby-on-rails-4.2,Ruby On Rails,Activerecord,Ruby On Rails 4.2,要自动生成国家/地区迁移,我将执行以下操作: rails 4.2.4 ruby 2.2.1 我想向生成的迁移文件添加外键: rails g migration CreateCountry abbreviation:string status:string search_operations_id:integer 如何使用rails g migration命令实现这一点?您可以说: add_foreign_key :countries, :search_operations, on_delet

要自动生成国家/地区迁移,我将执行以下操作:

rails 4.2.4
ruby 2.2.1
我想向生成的迁移文件添加外键:

rails g migration CreateCountry abbreviation:string status:string search_operations_id:integer

如何使用rails g migration命令实现这一点?

您可以说:

add_foreign_key :countries, :search_operations, on_delete: :cascade
当Rails生成迁移时,您应该看到如下内容:

rails g migration CreateCountry ... search_operations:references
class CreateCountry
老实说,我不知道是否可以用生成器实现这一点,但我知道Rails的生成器无法完成迁移中可能需要的所有操作。为什么不在生成迁移后手动添加
add\u foreign\u key
语句?是的,我知道我可以手动添加它。我现在就是这么做的。我正在寻找一个自动的捷径来完成它,它比生成一个空迁移文件然后向其中添加语句要简单。您可以使用自动迁移来完成它,但是需要手动添加
on_delete::cascade
选项。Rails generator不支持从命令行添加所有选项。on_delete:cascade将不存在,这实际上会生成一个t。references:search_operations,index:true,foreign_key:true对于迁移,目标是在删除search_操作时删除属于search_操作的国家/地区,不幸的是。。。我认为如果不手动添加,您将无法获得on_delete:cascade。。。
class CreateCountry < ActiveRecord::Migration
  def change
    ...
    add_reference :countries, :search_operations, index: true
    add_foreign_key :countries, :search_operations
  end
end