如何使用外键执行或生成迁移?我有municipios
表,我希望与表ciudades
相关联,表格将包含以下字段:nombre_id
(名称ID),nombre
(名称),{ {1}}(部门)在这种情况下我如何运行脚手架脚本来生成外键迁移?
答案 0 :(得分:5)
如果您要创建迁移文件,则命令为
rails generate migration NAME [field:type field:type] [options]
或快捷方式
rails g migration NAME [field:type field:type] [options]
但是如果你想从引用其他模型的模型创建一个脚手架。也许你可以这样做
用脚手架创建ciudades模型
rails g scaffold ciudades nombre_id:integer nombre:integer departamento:string
创建引用ciudades的市政模型
rails g scaffold municipios ciudades:references
这将在municipios表上创建属性ciudades_id。 迁移应该如下所示。
class CreateMunicipios < ActiveRecord::Migration
def self.up
create_table :municipios do |t|
t.references :ciudades
t.timestamps
end
end
def self.down
drop_table :municipios
end
end
同样在municipios模型上,它将创建belongs_to
关系。
但这不会更新cuidades
模型。你必须指定关系。
另请注意,rails会自动在模型上创建id字段。这是惯例。如果你的意思是nombre_id是主键,你必须自己指定它。
希望这个帮助
答案 1 :(得分:0)
脚手架不会为您创建关系。它将创建视图,控制器和其他,但其余(关系)需要手动编码。
所以你支持“municipios”,但如果你想要municipio有很多ciudades,你需要自己做。例如:
当脚手架给你时:
<% form_for([@municipio]) do |f| %>
您需要将其更改为:
<% form_for([@municipio, @ciudad]) do |f| %>