2011-08-11 46 views
3

如何使用外键执行迁移或生成外键?我有municipios表,并且我想与表ciudades关联,表中将包含以下字段:nombre_id(name id),​​(name),departamento(department)在这种情况下,我如何运行脚手架脚本来生成外键迁移?Rails 3,使用外键生成迁移

回答

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 

创建municipios模型引用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 

也在自治市模型它将创建belongs_to关系。

但这并不更新cuidades模型。你必须指定关系。

另外请记住,rails自动在模型上创建id字段。这是惯例。如果你的意思是nombre_id是主键,你必须指定它你的自我。

希望得到这个帮助

0

脚手架不会为您创建关系。它将创建视图,控制器和其他人,但其余(关系)需要手工编码。

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

当支架为您提供:

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

您需要将其更改为:

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