Comment appeler une classe à partir d'une chaîne contenant ce nom de classe à l'intérieur? (Je suppose que je pourrais faire cas/quand mais cela semble moche.)ruby convertir le nom de classe en chaîne en classe
La raison pour laquelle je demande est parce que j'utilise le plugin acts_as_commentable
, entre autres, et ceux-ci stockent le commentable_type comme une colonne. Je veux pouvoir appeler n'importe quelle classe commentable pour y faire un find(commentable_id)
.
Merci.
parfait, c'est exactement ce que je cherchais. – unsorted
Pour Ruby, vous utiliseriez 'Module.const_get'. L'avantage de 'constantize' est qu'il fonctionne même avec des espaces de noms profondément imbriqués, donc vous pouvez faire' 'Functional :: Collections :: LazyList'.constantize' et obtenir la classe LazyList depuis le module Collections dans le module Functional, alors qu'avec' const_get', vous devriez faire quelque chose comme ''Functional :: Collections :: LazyList'.split (' :: '). reduce (Module,: const_get)'. – Chuck