Rails 3,使用外键生成迁移

时间:2011-08-11 02:02:07

标签: ruby-on-rails ruby-on-rails-3 rails-migrations

如何使用外键执行或生成迁移?我有municipios表,我希望与表ciudades相关联,表格将包含以下字段:nombre_id(名称ID),nombre(名称),{ {1}}(部门)在这种情况下我如何运行脚手架脚本来生成外键迁移?

2 个答案:

答案 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| %>