J'ai une classe de rubis. Je veux obtenir une variable d'instance d'un argument à une méthode de cette classe. Je peux faire toutes les variables d'instance en tant que tableau: Cependant, je veux obtenir la variable d'instance nommée Comment calculer arg code>, spécifiquement: p> < Pré> xxx pré>
hash_of_instance_variables code>? p> p>
4 Réponses :
class MyClass def variables_to_hash h = {} instance_variables.each{|a| s = a.to_s n = s[1..s.size] v = instance_variable_get a h[n] = v } h end end
Notez que s [1...Size] code> peut être remplacé par
s [1 ..- 1] code>.
Pour créer un hachage de toutes les variables d'instance Vous pouvez utiliser le code suivant:
object.instance_variable_get :@my_instance_var
Question est une solution assez ancienne mais trouvée des rails pour cela: instance_values p>
Ceci est la première réponse dans Google afin que cela aidera peut-être quelqu'un. P>
Merci d'avoir aidé la communauté. Je n'utilise plus Ruby / Rails, passés à Node.js. Meilleurs
Le code utilisé par les rails est presque identique à la réponse acceptée à l'exception de l'exception que Rails lance le principal @ code>.
instance_values code> a travaillé pour moi et était plus simple. Merci! (maintenant testé avec des rails 6)
Ruby On Rails a un couple de façons intégrées de faire cela que vous pourriez trouver répondre à vos besoins. P>
utilisateur = utilisateur.new (premier: 'Brian', dernier: "cas") p> blockQuote>
attributs forts> ( Rails API: ActiveModel :: attributemethods < / a>) li> ul> utilisateur.Attributes p>
{"premier" => "Brian", "Dernier" => "cas"} p> blockQuote>
Serializable_hash strong> ( API de rails : Sérialisation du modèle actif ) li> ul> utilisateur.Serializeable_hash p>
{"premier" => "Brian", "Dernier" => "cas"} p> blockQuote>
Ceci s'applique uniquement aux modèles de rails (instances de activerecord :: base code>). Pour un objet Ruby arbitraire, @ Réponse de SUFLER fonctionne.
Peux-tu élaborer? Votre question n'est pas très claire.
On dirait que vous espérez construire un hachage qui mesure des variables d'instance sur leurs valeurs afin que vous puissiez récupérer la valeur de la variable d'instance. Si oui, pourquoi? Utilisez
instance_variable_get code>.