Pregunta

Tengo algo como este

class A < ActiveRecord::Base
# Parent class
end

class B < ActiveRecord::Base
# Parent class    
end

# models/a/x.rb

class X < A

end

# models/b/x.rb

class X < B

end

# application.rb

config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')]

Necesito hacer referencia a X :: B, pero aún así se hace referencia a la X del espacio de nombres de A.¿Hay alguna manera de lograr esto, o solo necesito cambiar el nombre de la clase de mi X?

gracias

¿Fue útil?

Solución

La estructura de archivos en sí no puede definir el espacio de nombres en absoluto.Necesitas escribir la constante en consecuencia.

# models/a/x.rb
class A::X < A

# models/b/x.rb
class B::X < B

También, en Rails 3 No es necesario definir la ruta de carga de ningún archivo dentro / aplicación, no está seguro de cómo funciona los Rails 4, pero supongo que debería ser similar.Si es así, su última línea es innecesaria también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top