dynamisch einstellen kann, sollte es einfach sein, aber ich konnte keine richtige Lösung finden. für die erste Ebene Schlüssel:Wie man den Wert des geschachtelten Schlüssels in Ruby Hash
resource.public_send("#{key}=", value)
aber für foo.bar.lolo
?
Ich weiß, dass ich es wie die bekommen kann folgende:
'foo.bar.lolo'.split('.').inject(resource, :send)
oder
resource.instance_eval("foo.bar.lolo")
aber, wie der Wert der letzten Variablen setzen unter der Annahme, dass ich weiß nicht, die Verschachtelungsebene es kann zweiter oder dritter sein.
Gibt es einen allgemeinen Weg, dies für alle Ebenen zu tun? für mein Beispiel kann ich es wie folgt tun:
resource.public_send("fofo").public_send("bar").public_send("lolo=", value)
'resource.public_send (" # {key} = ", Wert)' setzt nichts im Hash. – mudasobwa
Nein, es funktioniert nicht für verschachtelte Schlüssel, die Objekte enthalten. so funktioniert es für 'obj.fofo', aber es funktioniert nie für' bject.fofo.olo', gibt es undefined Methode – user181452
Bitte schreiben Sie einige Fakten und Informationen nicht nur Kritik :) das ist der Punkt der Website, nicht das zu zeigen Du weißt es und ich weiß es nicht. sag mir meine Fehler, es ist viel besser als nur diesen total nutzlosen Kommentar zu geben. Ich kann damit nichts anfangen. – user181452