2012-03-28 10 views
7

¿Puede un nombre de clase Rails contener números? Por ejemplo:¿Cómo puedo nombrar un archivo de Ruby de Rails cuyo nombre de clase tiene números?

class Test123 
end 

¿Es esta una clase válida? Obtengo un error uninitialized constant Test123 cuando intento cargar la clase.

+13

¿Por qué no pruebas y ver? –

+0

'constante no inicializada Test123'. ¿Eso significa que no es válido? @minitech dice que sí. –

+0

@ArtemKalinchuk: ¿Puedes mostrar el código exacto que produce ese error, por favor? – Ryan

Respuesta

39

Creo que el último comentario de Artem Kalinchuk merece ser la respuesta a esta pregunta mal formulada.

Un nombre de clase Ruby puede contener números.

A La clase de raíles debe definirse en un archivo con el nombre correcto. Si defino una clase llamada NewYear2012Controller, debe definirse en el archivo new_year2012_controller.rb en lugar de "new_year_2012_controller.rb".

Porque así es como funciona el inflador de carriles y la carga automática.

7

Sí, Ruby class names may contain numbers. Sin embargo, como con todos los identificadores en Ruby, they may not begin with numbers.

Reference:

Identificadores

Ejemplos:

identificadores
foobar ruby_is_simple 

Rubí son constan de alfabetos, dígitos decimales, y el carácter de subrayado, y comienzan con un alfabetos (incluyendo guion bajo). No hay restricciones en las longitudes de los identificadores de Ruby.

0

No sé sobre esto ...

Véase el siguiente

class Ab123 
    def initialize(y) 
    @z = y 
    end 
end 

class AbCde 
    def initialize(y) 
    @z = y 
    end 
end 

y las siguientes instancias:

Ab123.new x 

o

AbCde.new x 

Sólo el este último AbCde.new x instancias correctamente

1

tratar de hacer esto:

  • cambiar el nombre del modelo y el archivo de model.rb
  • añadir nombre_tabla magia

como en este caso:

class TwoProduct < ActiveRecord::Base 
    self.table_name = '2_products' 
end 
Cuestiones relacionadas