Embora a resposta aceita seja excelente, eu queria adicionar uma resposta aqui que, com sorte, lide melhor com a pergunta dos pôsteres originais, parte 2, para não especialistas como eu.
- Como faço para criar uma migração para substituir o tipo dessa coluna
gerando migração de andaime
Você pode gerar uma migração para manter sua alteração digitando em seu console (basta substituir o table
pelo nome das suas tabelas e column
pelo nome da coluna)
rails generate migration change_table_column
Isso irá gerar um esqueleto de migração dentro de sua aplicação Rails / db / migrate / pasta. Esta migração é um espaço reservado para seu código de migração.
Por exemplo, eu quero criar uma migração para alterar o tipo de uma coluna de string
para text
, em uma tabela chamada TodoItems:
class ChangeTodoItemsDescription < ActiveRecord::Migration
def change
# enter code here
change_column :todo_items, :description, :text
end
end
Executando sua migração
Depois de inserir o código para alterar a coluna, execute:
rake db:migrate
Para aplicar sua migração. Se você cometer um erro, pode sempre reverter a alteração com:
rake db:rollack
Métodos para cima e para baixo
As referências Up
e Down
métodos de resposta aceitos , em vez do Change
método mais recente . Desde o estilo antigo do rails 3.2 , os métodos Up e Down apresentaram algumas vantagens sobre o método Change mais recente. Evite 'para cima e para baixo' ActiveRecord::IrreversibleMigration exception
. Desde o lançamento do Rails 4 você pode usar reversible
para evitar este erro:
class ChangeProductsPrice < ActiveRecord::Migration
def change
reversible do |dir|
change_table :products do |t|
dir.up { t.change :price, :string }
dir.down { t.change :price, :integer }
end
end
end
end
Aproveite o Rails :)