├── 20090204104949_create_cidades.rb ├── 20090204104926_create_estados.rb └── README.md /20090204104949_create_cidades.rb: -------------------------------------------------------------------------------- 1 | class CreateCidades < ActiveRecord::Migration 2 | def change 3 | create_table :cidades do |t| 4 | t.string :nome 5 | t.references :estado 6 | 7 | t.timestamps 8 | end 9 | add_index :cidades, :estado_id 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /20090204104926_create_estados.rb: -------------------------------------------------------------------------------- 1 | class CreateEstados < ActiveRecord::Migration 2 | def change 3 | create_table :estados do |t| 4 | t.string :sigla 5 | t.string :nome 6 | t.integer :capital_id 7 | 8 | t.timestamps 9 | end 10 | 11 | add_index :estados, :capital_id 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Migration que popula o banco de dados com os estados e cidades do Brasil com dados extraídos do site do IBGE, em http://www.sidra.ibge.gov.br/bda/territorio/download/dtb2006.zip 2 | 3 | Para utilizá-la é necessário criar os seguintes models: 4 | 5 | ##Rails 3## 6 | 7 | `Estado.rb` 8 | ``` 9 | class Estado < ActiveRecord::Base 10 | attr_accessible :nome, :sigla 11 | 12 | has_many :cidades 13 | 14 | belongs_to :capital, :class_name => 'Cidade' 15 | end 16 | ``` 17 | 18 | `Cidade.rb` 19 | ``` 20 | class Cidade < ActiveRecord::Base 21 | belongs_to :estado 22 | attr_accessible :nome 23 | end 24 | ``` 25 | 26 | ##Rails 4## 27 | 28 | `Estado.rb` 29 | ``` 30 | class Estado < ActiveRecord::Base 31 | has_many :cidades 32 | 33 | belongs_to :capital, :class_name => 'Cidade' 34 | 35 | def estado_params 36 | params.require(:estado).permit(:nome, :sigla, :capital) 37 | end 38 | end 39 | ``` 40 | `Cidade.rb` 41 | ``` 42 | class Cidade < ActiveRecord::Base 43 | belongs_to :estado 44 | 45 | def cidade_params 46 | params.require(:cidade).permit(:nome) 47 | end 48 | end 49 | ``` 50 | 51 | - Modificado o migration para que funcione com versões do Rails 2, 3 e 4 52 | - Incluindo '# -*- coding: UTF-8 -*-' no topo do arquivo para ruby 1.9.x 53 | - Modifiquei o nome da classe da migration que popula os estados e cidades. O rake esta comparando o nome do arquivo com o nome da classe e gerando um erro. 54 | - Incluí a propriedade "capital" no model "Estado", para que seja possivel identificar a cidade que é capital do estado, para ordenar um combo priorizando a capital, por exemplo. --------------------------------------------------------------------------------