我该如何使用外键进行迁移或生成迁移?我有一个 municipios
表,我想将其与表 ciudades
相关联,表将具有以下字段:nombre_id
(名称ID),nombre
(名称),departamento
(部门)。在这种情况下,我应该如何运行脚手架脚本以生成外键迁移?
我该如何使用外键进行迁移或生成迁移?我有一个 municipios
表,我想将其与表 ciudades
相关联,表将具有以下字段:nombre_id
(名称ID),nombre
(名称),departamento
(部门)。在这种情况下,我应该如何运行脚手架脚本以生成外键迁移?
如果您想创建迁移文件,命令如下:
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
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 是主键,您必须自己指定。
希望这能帮助您。
脚手架不会自动生成关系。它会创建视图、控制器等,但其他部分(关系)需要手工编码。
因此,您可以建立“municipios”的脚手架,但如果您希望“municipio”有多个“ciudades”,则需要自己完成。例如:
当脚手架提供给您:
<% form_for([@municipio]) do |f| %>
你需要将它改为:
<% form_for([@municipio, @ciudad]) do |f| %>