2012-07-13 20 views
6

Cómo agregar una columna a una tabla usando ActiveRecord a través del terminal. Estoy intentando usar el método add_column, pero no funciona. Alguna idea, por favor?Agregar una columna a través del terminal

+0

¿Qué base de datos está utilizando? – cdesrosiers

+1

Es mejor escribir una migración –

+0

Estoy usando el valor predeterminado de rail, que si no me equivoco, es SQLite ... Sin embargo, no debería importar ya que estoy abstrayendo el código SQL usando ActiveRecord. Genere un modelo de Cuenta y olvidé insertar un nombre de campo de correo electrónico y deseo agregarlo ... – Sweebo

Respuesta

8

Es mejor escribir una migración y una obligación si está trabajando con un equipo. Cuando realiza cambios de db, también se debe actualizar el entorno de cada desarrollador. De lo contrario, tendrás algunos desarrolladores enojados contigo.

rails generate migration AddPartNumberToProducts part_number:string 

generará

class AddPartNumberToProducts < ActiveRecord::Migration 
    def change 
    add_column :products, :part_number, :string 
    end 
end 

entonces se corre la migración

rake db:migrate 

http://guides.rubyonrails.org/migrations.html

Editar:

Por toda respuesta, una consola de rieles de línea de comandos de verificación de @ Tadman o utilizar las Bengala propuso como

ActiveRecord::Migration.add_column :products, :part_number, :string 
+0

Thx por la ayuda. Con respecto al modelo de producto, ¿supongo que debe agregar el acceso para atender la nueva columna manualmente? ¿Rails no editará el modelo automáticamente? – Sweebo

+0

@Sweebo, corregir –

+0

No respondió la pregunta – Bengala

3

Si solo está pirateando, generalmente es más fácil manipular la base de datos utilizando un cliente SQLite de algún tipo que a través de la capa Rails DB.

Si está haciendo esto para un proyecto, cree un archivo de migración adecuado y ejecútelo.

Si está decidido a hacerlo, el método add_column está disponible a través del objeto del controlador ActiveRecord::Base.connection.

8

Puede ejecutar migraciones directamente en los carriles de la consola rails c con ActiveRecord::Migration

para su propósito que el siguiente comando hará lo que usted pregunte:

> ActiveRecord::Migration.add_column :table_name, :field_name, :field_type 
+0

Gracias por esto. Por supuesto, es mejor escribir una migración casi todo el tiempo. Pero a veces, sabes exactamente lo que estás haciendo y solo quieres ejecutar un cambio directamente :) – FeifanZ

+0

Sí, pero no preguntó cómo hacer una migración, preguntó cómo agregar una columna a través de la terminal. Y creo que esta es la respuesta adecuada. – Bengala

Cuestiones relacionadas