É um código simples mas chato de se fazer. O que eu fiz foi só organizar um código (pra ser usado em um seed do Rails) pra popular as tabelas Região, Estado e Cidades.
Quem achar algum erro de português ou cidade faltando, por favor me sinalize para que outras pessoas possam ter acesso ao arquivo corrigido.
Simplesmente copie o conteúdo do arquivo “br_populate.rb” e cole no Seed.rb (ou em outro arquivo) de sua aplicação. Uma outra sugestão é incluir em um arquivo Thor na pasta /lib/tasks do seu projeto Rails.
Eu estou usando as tabelas de Cidade, Estado e Região com a seguinte estrutura:
________________ ___________________ __________________ | Regions | | States | | Cities | |----------------| 1 ------------ * |-------------------| 1 ------------ * |------------------| | name:string | | name:string | | name:string | ---------------- | acronym:string | | capital:boolean | | region_id:integer | | state_id:integer | ------------------- ------------------
O loop de inserção das cidades está bem curtinho, então caso sua estrutura seja diferente da minha, é fácil alterar.
states.each do |state| region_obj = Region.find_or_create_by(:name => state["region"]) state_obj = State.new(:acronym => state["acronym"], :name => state["name"], :region => region_obj) state_obj.save state["cities"].each do |city| c = City.new c.name = city c.state = state_obj c.capital = capital?(city, state) c.save end end
Eu achei a lista das cidade desse arquivo .js: “cidades-estados-js.googlecode.com/files/cidades-estados-v0.2.js” escrito po DGmike do site dgmike.com.br/
No projeto contém os models e as migrations de exemplo para criação das tabelas e uso do código. Lembre de alterar o timestamp das migrations.