Temos script/generate migration add_fieldname_to_tablename fieldname:datatype
sintaxe para adicionar novas colunas a um modelo.
Na mesma linha, temos um script / generate para alterar o tipo de dados de uma coluna? Ou devo escrever SQL diretamente na minha migração de baunilha?
Eu quero mudar uma coluna de datetime
para date
.
ruby-on-rails
migration
papdel
fonte
fonte
change
ação usual por separadaup
edown
ações, poischange_column
é uma migração irreversível e causará um erro caso você precise reverter.Você também pode usar um bloco se tiver várias colunas para alterar em uma tabela.
Exemplo:
Consulte a documentação da API na classe Table para obter mais detalhes.
fonte
Não sei se é possível criar uma migração a partir da linha de comando para fazer tudo isso, mas é possível criar uma nova migração e editar a migração para executar essas tarefas.
Se tablename é o nome da sua tabela, fieldname é o nome do seu campo e você deseja alterar de data e hora para data, você pode escrever uma migração para fazer isso.
Você pode criar uma nova migração com:
Em seguida, edite a migração para usar change_table:
Em seguida, execute a migração:
fonte
Como descobri pelas respostas anteriores, são necessárias três etapas para alterar o tipo de uma coluna:
Passo 1:
Gere um novo arquivo de migração usando este código:
Passo 2:
Vá para a
/db/migrate
pasta e edite o arquivo de migração que você criou. Existem duas soluções diferentes.2)
Etapa 3:
Não esqueça de executar este comando:
Eu testei esta solução para o Rails 4 e funciona bem.
fonte
Com trilhos 5
Nos Guias do Rails :
fonte
Basta gerar migração:
Atualize a migração assim:
e finalmente
fonte
Outra maneira de alterar o tipo de dados usando a migração
etapa1: você precisa remover o nome do campo do tipo de dados com falha usando a migração
ex:
Aqui não se esqueça de especificar o tipo de dados para o seu campo
Etapa 2: agora você pode adicionar um campo com o tipo de dados correto
ex:
É isso aí, agora sua tabela será adicionada com o campo de tipo de dados correto, Happy ruby coding !!
fonte
Isso tudo pressupõe que o tipo de dados da coluna tenha uma conversão implícita para quaisquer dados existentes. Eu já tive várias situações em que os dados existentes, digamos,
String
podem ser implicitamente convertidos no novo tipo de dados, digamosDate
.Nessa situação, é útil saber que você pode criar migrações com conversões de dados. Pessoalmente, gosto de colocá-las no meu arquivo de modelo e removê-las depois que todos os esquemas do banco de dados foram migrados e estão estáveis.
fonte
Para concluir as respostas em caso de edição do valor padrão :
No seu console de trilhos:
Na migração:
Vai parecer :
fonte