El mismo nombre de clase en STI, con diferentes espacios de nombres.
-
22-12-2019 - |
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
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