Removendo Colunas de uma Migration

433 views
Skip to first unread message

Uriel Juliatti

unread,
Mar 1, 2011, 8:17:15 AM3/1/11
to rails-br
Fala rapazeada, andei lendo aqui algumas dicas sobre como remover
colunas (adicionar eu já sei) de um determinado migration.

Minha migration se encontra assim:

class CreatePhotos < ActiveRecord::Migration
def self.up
create_table :photos do |t|
t.string :name
t.integer :trabalho_id

t.timestamps
end
end

def self.down
drop_table :photos
end
end

Eu gostaria de remover essa coluna chamada t.integer :trabalho_id

Então fiz: rails generate migration RemoveTrabalhoIdFromPhoto. E
executei um rake db:migration

Me retornou o seguinte:


uriel@ubuntu:~/Web/Rails/Zephyr-CMS$ rake db:migrate
(in /home/uriel/Web/Rails/Zephyr-CMS)
== RemoveTrabalhoIdFromPhoto: migrating
======================================
== RemoveTrabalhoIdFromPhoto: migrated (0.0000s)
=============================


Está realmente removendo? Eu acho que não, senão apareceria:

remove_column :photos, :trabalho_id

Alguém sabe como fazer isso caso esteja errado?

Abraço!

Giovanni Degani

unread,
Mar 1, 2011, 8:19:59 AM3/1/11
to rail...@googlegroups.com
O gerador de migration apenas gera o arquivo, ele nao gera os comandos
para remover mesmo as colunas, tu ainda precisas editar o arquivo e
colocar o remove_column.
Giovanni Degani
tie...@gmail.com


2011/3/1 Uriel Juliatti <uriel.jul...@gmail.com>:

> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
> Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.
>
>

Uriel Juliatti Valle

unread,
Mar 1, 2011, 8:29:26 AM3/1/11
to rail...@googlegroups.com
Fala Giovani, obrigado!
Você diz, colocar no self_down e depois gerar o migration?
--
"O único lugar onde o sucesso vem antes do trabalho é no dicionário." - Albert Einstein

Giovanni Degani

unread,
Mar 1, 2011, 8:31:25 AM3/1/11
to rail...@googlegroups.com
Como tu queres remover a coluna com a migration, tu precisa colocar no
UP...pois com aquela migration rodada, a coluna precisa ser removida.
no down tu podes colocar para inserir a coluna novamente, caso tu
queira reverter a migration.

Giovanni Degani
tie...@gmail.com


2011/3/1 Uriel Juliatti Valle <uriel.jul...@gmail.com>:

Uriel Juliatti Valle

unread,
Mar 1, 2011, 8:35:04 AM3/1/11
to rail...@googlegroups.com
Não entendi muito bem ainda. Eu só preciso remover o trabalho_id. Eu fiz a migration para isso e rodei. Mas não aparece nada dizendo que foi alterado.

Giovanni Degani

unread,
Mar 1, 2011, 8:44:24 AM3/1/11
to rail...@googlegroups.com
Tem como vc colar todo o conteudo do arquivo de migration aqui ou em
algum gist ?

Uriel Juliatti Valle

unread,
Mar 1, 2011, 8:56:37 AM3/1/11
to rail...@googlegroups.com
Agora sim, era tudo uma questão de sintaxe e declaração no generate.

Eu fiz :

rails generate migration RemoveTrabalhoIdFromPhoto trabalho_id:integer

fiz o Rake db:migrate e foi certo:

(in /home/uriel/Web/Rails/Zephyr-CMS)
==  RemoveTrabalhoIdFromPhoto: migrating ======================================
-- remove_column(:photos, :trabalho_id)
   -> 0.1292s
==  RemoveTrabalhoIdFromPhoto: migrated (0.1293s) =============================

Me perdoe pela explicação fajuta, foi falha na minha comunicação e desatenção com o meu código :)

Obrigado pela atenção e ajuda!

Allam Marcos Campanini Matsubara

unread,
Mar 1, 2011, 5:22:36 PM3/1/11
to rail...@googlegroups.com
Tem que tomar cuidado com esses geradores de código, eles são bem confiáveis mas semore vale uma espiada no código gerado. Sempre que eu faço uma migration desse tipo eu olho o conteúdo do arquivo gerado para ver se o ele realmente vai fazer o que eu espero. Outro benefício de olhar o código é você apender como o rails cria esses arquivos, caso você precise escrever um código desse para qual não existe uma migration, como por exemplo remover n colunas de n tabelas diferentes, ou modificar tipos ou nomes de colunas, etc.
Allam Marcos Campanini Matsubara

skype: allam.matsubara
twitter: @allam_matsubara
Phone: (41) 8847-8677


Uriel Juliatti Valle

unread,
Mar 1, 2011, 9:05:17 PM3/1/11
to rail...@googlegroups.com
Massa, cara.

Eu observei meu schema.rb, tá tudo ok!

  create_table "photos", :force => true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "image"
    t.integer  "owner_id"
    t.string   "owner_type"
  end

;)
Reply all
Reply to author
Forward
0 new messages