это должно быть легко, но я не смог найти правильное решение. для первых ключей уровня:Как установить динамическое значение вложенного ключа в хэш-код Ruby
resource.public_send("#{key}=", value)
но foo.bar.lolo
?
Я знаю, что я могу получить его, как следующее:
'foo.bar.lolo'.split('.').inject(resource, :send)
или
resource.instance_eval("foo.bar.lolo")
, но как установить значение последней переменной при условии, что я не знаю, уровень вложенности , он может быть вторым или третьим.
Есть ли общий способ сделать это для всех уровней? для моего примера я могу сделать это так:
resource.public_send("fofo").public_send("bar").public_send("lolo=", value)
'resource.public_send (" # {key} = ", value)' ничего не устанавливает в хэше. – mudasobwa
Нет, он не работает для вложенных ключей, у которых есть объекты внутри. , так что он работает для 'obj.fofo', но он никогда не работает для' bject.fofo.lolo', он дает неопределенный метод – user181452
, пожалуйста, напишите некоторые факты и информацию не только о критике :) вот в чем смысл сайта, не хвастаясь тем, что вы знаете, и я не знаю. скажи мне мои ошибки, это лучше, чем просто дать этот совершенно бесполезный комментарий. Я ничего не могу с этим поделать. – user181452