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

Était-ce utile?

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
scroll top