Même nom de classe dans STI, avec différents espaces de noms
-
22-12-2019 - |
Question
J'ai quelque chose comme ça
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', '{**}')]
Je dois référencer x :: B, mais toujours le X de l'espace de noms d'A est référencé.Y a-t-il de toute façon pour y parvenir, ou j'ai juste besoin de changer le nom de la classe de mon X?
merci
La solution
Structure de fichier elle-même ne peut pas du tout définir l'espace de noms.Vous devez écrire la constante en conséquence.
# models/a/x.rb
class A::X < A
# models/b/x.rb
class B::X < B
Aussi, dans les rails 3, il n'est pas nécessaire de définir le trajet de chargement des fichiers à l'intérieur / de l'application, je ne sais pas comment les rails 4 fonctionne, mais je suppose que cela devrait être similaire.Si oui, votre dernière ligne est également inutile.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow