繁体   English   中英

Rails 3,使用外键生成迁移

[英]Rails 3, generate migration with foreign key

如何使用外键进行或生成迁移? 我有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]

但是,如果您想从引用其他 model 的 model 创建一个脚手架。 也许你可以这样做

用脚手架创建 ciudades model

rails g scaffold ciudades nombre_id:integer nombre:integer departamento:string

创建引用 ciudades 的 municipios model

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 model 上,它将创建belongs_to关系。

但这不会更新cuidades model。 您必须指定关系。

还要记住,rails 会自动在 model 上创建 id 字段。 这是公约。 如果您的意思是 nombre_id 是主键,您必须自己指定它。

希望这有帮助

Scaffold 不会为您创建关系。 它将创建视图、控制器和其他,但 rest(关系)需要手动编码。

所以你脚手架“municipios”,但如果你想让 municipio 有很多 ciudades,你需要自己做。 例如:

当脚手架给你:

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

您需要将其更改为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM