Rails 3,使用外键生成迁移

4

我该如何使用外键进行迁移或生成迁移?我有一个 municipios 表,我想将其与表 ciudades 相关联,表将具有以下字段:nombre_id(名称ID),nombre(名称),departamento(部门)。在这种情况下,我应该如何运行脚手架脚本以生成外键迁移?

2个回答

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的municipios模型。
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 是主键,您必须自己指定。

希望这能帮助您。


0

脚手架不会自动生成关系。它会创建视图、控制器等,但其他部分(关系)需要手工编码。

因此,您可以建立“municipios”的脚手架,但如果您希望“municipio”有多个“ciudades”,则需要自己完成。例如:

当脚手架提供给您:

<% form_for([@municipio]) do |f| %>

你需要将它改为:

<% form_for([@municipio, @ciudad]) do |f| %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接