2010-12-30 25 views
10

Soy nuevo en Ruby and Rails y estoy ejecutando Rails 3 en Ruby 1.9.2.Pasar parámetros adicionales a Rails Generate Model?

Quiero crear un modelo, así que miré el documentation para obtener la definición de la tabla que quiero, pero me pregunto cómo podría pasar esto a los carriles generar el modelo?

Básicamente quiero esto:

title :string, :null => false 
details :text, :limit => 30000, :null => false 

Pero sólo puede especificar el nombre de la columna y el tipo, no: o nula: límite.

He intentado rails model generate Article (title:string, :null => false) (details:text, :limit=>30000, :null => false) pero eso sólo me dice que (es un símbolo inesperado

Si tan sólo generar el modelo con el título:. Detalles de cadena: el texto a continuación, el archivo article.rb está vacía, presumiblemente porque es leer de todos modos DB

Como se supone que todo en Rails es a) simple yb) mágico, me pregunto si me estoy perdiendo algo y tengo que pasar algo así como un hash para generar un modelo. ¿O realmente tengo que editar manualmente el archivo .rb de migración?

+1

Tiene que editar manualmente. – Heikki

Respuesta

8

Sí, tiene que editar manualmente el archivo de migración para eso. El generador solo ofrece un punto de partida, no hace todo.

Hacer esto en el archivo de migración es muy fácil de todos modos.

create_table :articles do |t| 
    t.string :title, :null => false 
    t.text :details, :limit => 3000, :null => false 
end 
+1

Esto me llevó una eternidad para rastrear. He estado buscando todo sobre cómo hacer el límite en mi andamio 'rails g ...' ¡gracias! – Ryan

7

Pruebe algunos trucos: belongs_to y el índice

rails g model User username:string:index group:belongs_to 

Esto creará:

class User < ActiveRecord::Base 
    belongs_to :group 
    attr_accessible :username 
end 
19

Como resultado, el límite puede (ahora) se especifica en la línea de comandos:

rails generate model user pseudo:string{30} 

Fuente:usage doc from Rails GitHub project

Sin embargo, al establecer el valor predeterminado, parece que todavía es necesario editar la migración manualmente.

Para obtener opciones de migración adicionales, consulte the official Rails migrations guide.

+0

¡GUAU! esta respuesta es tan correcta. ¿Cómo podría mostrar el documento desde la línea de comandos? ¿Los carriles ayudan al modelo? – zx1986

+0

@ zx1986 'bin/rails g model' debería hacer el truco –

1

Puede pasar "null".to_sym => false en su raíles generar modelo.
Por ejemplo:

rails g model client 'ClientName, "null".to_sym => false:string{100}' 

Esto a su vez la "nulo" en un símbolo, lo que permite que se ejecute correctamente cuando se ejecuta db:migrate

Cuestiones relacionadas