这应该很容易,但我找不到合适的解决方案。对于第一级按键:
resource.public_send("#{key}=", value)
Run Code Online (Sandbox Code Playgroud)
但对于foo.bar.lolo?
我知道我可以像下面这样得到它:
'foo.bar.lolo'.split('.').inject(resource, :send)
Run Code Online (Sandbox Code Playgroud)
或者
resource.instance_eval("foo.bar.lolo")
Run Code Online (Sandbox Code Playgroud)
但是假设我不知道嵌套级别,如何将值设置为最后一个变量,它可能是第二个或第三个。
有没有通用的方法可以为所有级别做到这一点?对于我的例子,我可以这样做:
resource.public_send("fofo").public_send("bar").public_send("lolo=", value)
Run Code Online (Sandbox Code Playgroud)