これは簡単ですが、適切な解決策を見つけることができませんでした。Rubyハッシュでネストされたキーの動的な値を設定するには
resource.public_send("#{key}=", value)
しかしfoo.bar.lolo
用:最初のレベルのキーの ?
私は次のようにそれを得ることができることを知っている:
'foo.bar.lolo'.split('.').inject(resource, :send)
または
resource.instance_eval("foo.bar.lolo")
が、どのように私は入れ子のレベルを知っていないと仮定して、最後の変数に値を設定しますそれは第2または第3であってもよい。
すべてのレベルでそれを行う一般的な方法はありますか?私の例のための は、私は次のようにそれを行うことができます:Rubyで
resource.public_send("fofo").public_send("bar").public_send("lolo=", value)
'resource.public_send("#{key} = "、value)'はハッシュに何も設定しません。 – mudasobwa
いいえオブジェクトが内部にあるネストされたキーでは機能しません。 'obj.fofo'でも動作しますが、' bject.fofo.lolo'では動作しません。未定義のメソッドを提供します – user181452
批評だけでなく、事実や情報を書いてください:)それはウェブサイトのポイントです。あなたは知っているし、私は知らない。私の間違いを教えてください、それはちょうどこれを完全に役に立たないコメントを与えるよりも良い方法です。私はそれで何もできません。 – user181452